2016-02-29 40 views
2

德爾福。 我需要將日期時間字符串轉換爲TDateTime類型。該代碼使用:德爾福日期時間格式錯誤

... 
var 
    fs : TFormatSettings; 
    dt: TDateTime; 
begin 
    fs := TFormatSettings.Create; 
    fs.DateSeparator := '-'; 
    fs.TimeSeparator := ':'; 
    fs.ShortDateFormat := 'dd-mmm-yy'; 
    fs.ShortTimeFormat := 'hh:nn:ss'; 
    dt := StrToDateTime(Timestamp, fs); 
... 

的字符串是這樣的:時間戳:= '26 -Feb-16 08:30:00'

我只得到轉換的錯誤信息

EConvertError ,'26 -Feb-16 8' 時30分28秒不是一個有效的日期和時間

如果我手動輸入格式的時間戳 'YYYY/MM/DD HH:NN:SS' 和使ShortDateFormat: ='yyyy/mm/dd';和ShortTimeFormat:='hh:nn:ss';我沒有問題...

我不知道我失蹤了什麼?任何人都有線索?

+4

當您報告看到錯誤消息但未包含其內容的事實時,總是令人沮喪。這意味着你沒有閱讀錯誤信息。當人們遇到錯誤信息時,他們經常瞪大了眼睛,因爲他們認爲他們不瞭解他們,或者不理解他們,或者他們沒有傳達有用的信息,或者我不知道是什麼。無論如何,你永遠不知道,錯誤信息可能是有用的。永遠不要忽略這些細節。 –

+0

verstion德爾福10西雅圖 – chillum

+0

它說轉換錯誤:-) EConvertError,'26 -Feb-16 08:30:28'是不是有效的日期和時間 – chillum

回答

4

StrToDateTime不支持指定月份爲格式的短格式或長格式的格式。

您將不得不使用其他方法解析文本。坦率地說,這種格式很容易解析。

  1. 拆分空格字符上的輸入以獲取日期和時間部分。
  2. 將日期部分拆分爲-以獲取日期,月份和年份部分。搜索12個簡短的月份名稱以查找匹配項。
  3. 將時間部分拆分爲:以查找小時,分鐘和秒鐘。或使用StrToTime

或者你也可以把輸入和與一個月用數字代替短月份名稱和使用StrToDateTimemm個月格式。

+0

哇,快回答,知道怎麼做,thx ;-) – chillum