首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >FormatDateTime的逆函数

FormatDateTime的逆函数
EN

Stack Overflow用户
提问于 2010-03-23 20:42:51
回答 7查看 21.2K关注 0票数 20

我正在寻找一个函数来反转任何字符串(YYYYMDDYY/MM/DDYYMMDD,.)由函数FormatDateTime创建的datetime。

示例

我有一个由YYYYMMDD创建的FormatDateTime格式的字符串日期。

代码语言:javascript
复制
mydatestr:=FormatDateTime('YYYYMMDD',Mydate); 

现在我如何再次将mydatestr转换为DateTime

更新

这些功能

代码语言:javascript
复制
function StrToDate(const S: string): TDateTime; overload;
function StrToDate(const S: string;
  const FormatSettings: TFormatSettings): TDateTime; overload;

function StrToDateTime(const S: string): TDateTime; overload;
function StrToDateTime(const S: string;
  const FormatSettings: TFormatSettings): TDateTime; overload;

不支持以要转换的格式传递字符串。

我看起来像这样

代码语言:javascript
复制
Mydatetime:=InvFormatDatetime('20091225','yyyymmdd');

代码语言:javascript
复制
Mydatetime:=InvFormatDatetime('20090108','yyyyddmm');
EN

回答 7

Stack Overflow用户

回答已采纳

发布于 2010-03-23 20:53:56

对于现有的解决方案,从RX包到StrToDateFmt单元中的rxDateutil.pas函数非常简单,可以在这里下载:http://sourceforge.net/projects/rxlib/

编辑:

上面提到的函数和StrToDateFmt与您期望的完全一样,使用指定的字符串掩码将字符串转换为日期时间,代码太大,无法包含,因为此单元还包含其他日期函数,其中一些函数是将字符串转换为date所必需的。

使用实例:

代码语言:javascript
复制
Result := StrToDateFmtDef('MM/DD/YYYY', '11/11/2011', Now);
票数 10
EN

Stack Overflow用户

发布于 2016-02-24 12:14:36

Note__:不幸的是,正如马蒂安在本答复的评论中指出的那样,如果日期不包括日期分隔符,此解决方案将无法工作。然而,我将把答案留给任何可能认为它有用的人。

我喜欢Tuncay的回答,但有几个问题。我会留下评论,但我没有足够的声誉点。

因此,以下是Tuncay答案的修正版本(修改"TFormatSetting“中缺少"s”并指定了格式设置日期分隔符):

代码语言:javascript
复制
function AnyStringToDate(fmt, dt: String) : TDateTime;
var
  fs : TFormatSettings;
Begin
  fs := TFormatSettings.Create;
  fs.DateSeparator := '-';
  fs.ShortDateFormat := fmt;

  result := StrToDateDef(dt, 0, fs);
End;

与Tuncay的回答相同,AnyStringToDate可以如下所用:

代码语言:javascript
复制
mydate := AnyStringToDate('YYYY-MM-DD', '2015-01-20');
票数 6
EN

Stack Overflow用户

发布于 2015-02-26 15:31:56

在不使用任何外部库的情况下,可以执行以下操作:

代码语言:javascript
复制
function AnyStringToDate(fmt, dt: String) : TDateTime;
var
  fs : TFormatSettings;
Begin
  fs := TFormatSettings.Create;
  fs.ShortDateFormat := fmt;

  result := StrToDateDef(dt, 0, fs);
End;

然后用它就像:

代码语言:javascript
复制
  mydate := AnyStringToDate('YYYY-MM-DD', '2015-01-20');

我还没有编写过这篇文章,但这个想法很简单。

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2503460

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档