簡體   English   中英

在C ++ Builder 2009中將字符串轉換為TDateTime

[英]Converting string to TDateTime in C++Builder 2009

我嘗試使用C ++ Builder 2009將特定格式的字符串轉換為TDateTime

TDateTime dt, dt2;
TFormatSettings FS, FS2;

UnicodeString datestring = "17/10/2017 13:24:33";
UnicodeString datestring2 = "2017.17.10 13:24:33";

FS.DateSeparator = '/';
FS.ShortDateFormat = "dd/mm/yyyy";
FS.LongTimeFormat = "hh:nn:ss";
FS.TimeSeparator = ':';

FS2.DateSeparator = '.';
FS2.ShortDateFormat = "yyyy.dd.mm";
FS2.LongTimeFormat = "hh:nn:ss";
FS2.TimeSeparator = ':';

try{
    dt = StrToDateTime(datestring, FS);
    dt2 = StrToDateTime(datestring2,FS2);
}catch(EConvertError& e)
{
    int a = 2;
}

dt轉換可以,但是dt2轉換會引發異常:

``2017.17.10 13:24:33''不是有效的日期和時間

根據StrToDate()的文檔(也適用於StrToDateTime() ):

S必須由兩個或三個數字,通過用定義的字符分隔的DateSeparator全局變量或其TFormatSettings等效。 月,日和年的順序由ShortDateFormat全局變量或其等效的TFormatSettings確定- 可能的組合為m / d / y,d / m / y和y / m / d

失敗日期是y/d/m格式,這些RTL函數不支持該格式。 支持的日期是d/m/y格式。

謝謝你們!

好的,現在我知道,StrToDateTime不支持此日期格式。 解決此問題的方法是,將Windows ShortDateFormat和LongTimeFormat轉換並合並,以格式化strptime()從time.h接受的字符串。 然后,我使用strptime()從time.h的tm struct創建TDateTime。 我嘗試鏈接文檔,但是在文檔中沒有任何strptime函數。 我從CodeGear RTL版本13中的time.h中找到了這個func。我認為這等效於strptime

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM