我正在寻找一个函数来反转任何字符串(YYYYMDD,YY/MM/DD,YYMMDD,.)由函数FormatDateTime创建的datetime。
示例
我有一个由YYYYMMDD创建的FormatDateTime格式的字符串日期。
mydatestr:=FormatDateTime('YYYYMMDD',Mydate); 现在我如何再次将mydatestr转换为DateTime?
更新
这些功能
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;不支持以要转换的格式传递字符串。
我看起来像这样
Mydatetime:=InvFormatDatetime('20091225','yyyymmdd');或
Mydatetime:=InvFormatDatetime('20090108','yyyyddmm');发布于 2010-03-23 20:53:56
对于现有的解决方案,从RX包到StrToDateFmt单元中的rxDateutil.pas函数非常简单,可以在这里下载:http://sourceforge.net/projects/rxlib/。
编辑:
上面提到的函数和StrToDateFmt与您期望的完全一样,使用指定的字符串掩码将字符串转换为日期时间,代码太大,无法包含,因为此单元还包含其他日期函数,其中一些函数是将字符串转换为date所必需的。
使用实例:
Result := StrToDateFmtDef('MM/DD/YYYY', '11/11/2011', Now);发布于 2016-02-24 12:14:36
Note__:不幸的是,正如马蒂安在本答复的评论中指出的那样,如果日期不包括日期分隔符,此解决方案将无法工作。然而,我将把答案留给任何可能认为它有用的人。
我喜欢Tuncay的回答,但有几个问题。我会留下评论,但我没有足够的声誉点。
因此,以下是Tuncay答案的修正版本(修改"TFormatSetting“中缺少"s”并指定了格式设置日期分隔符):
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可以如下所用:
mydate := AnyStringToDate('YYYY-MM-DD', '2015-01-20');发布于 2015-02-26 15:31:56
在不使用任何外部库的情况下,可以执行以下操作:
function AnyStringToDate(fmt, dt: String) : TDateTime;
var
fs : TFormatSettings;
Begin
fs := TFormatSettings.Create;
fs.ShortDateFormat := fmt;
result := StrToDateDef(dt, 0, fs);
End;然后用它就像:
mydate := AnyStringToDate('YYYY-MM-DD', '2015-01-20');我还没有编写过这篇文章,但这个想法很简单。
https://stackoverflow.com/questions/2503460
复制相似问题