如果你在使用Delphi進行JSON解析時遇到了JSON日期格式轉時間戳的問題,本文將會為你提供解決方案。
在Delphi中,可以使用TJSONObject類來解析JSON數據,并使用TryStrToDateTime函數將JSON日期格式轉為TDateTime類型。但是,如果你想將TDateTime類型轉為Unix時間戳,你需要編寫一些自定義的代碼來實現。
function DateTimeToUnixTimeStamp(const ADateTime: TDateTime): Int64; const UnixStartDate: TDateTime = 25569.0; // 01/01/1970 begin Result := Round((ADateTime - UnixStartDate) * 86400); end;
上述代碼實現了將TDateTime轉為Unix時間戳的功能。它使用了Round函數將浮點數四舍五入,并將結果轉為Int64類型。它還使用了UnixStartDate常量來表示Unix時間戳的起始時間。
使用上述函數將JSON日期格式轉為Unix時間戳的代碼示例如下:
var json: TJSONObject; dateStr: string; dateTime: TDateTime; unixTimeStamp: Int64; begin // 解析JSON數據 json := TJSONObject.Create; try json.Parse('{"date":"2022-01-01T12:34:56Z"}'); // 獲取日期字符串并轉為TDateTime類型 dateStr := json.GetValue('date').Value; TryStrToDateTime(dateStr, dateTime); // 將TDateTime類型轉為Unix時間戳 unixTimeStamp := DateTimeToUnixTimeStamp(dateTime); // 輸出結果 ShowMessage(IntToStr(unixTimeStamp)); finally json.Free; end; end;
使用TryStrToDateTime函數將JSON日期格式轉為TDateTime類型后,我們使用DateTimeToUnixTimeStamp函數將TDateTime類型轉為Unix時間戳,并輸出結果。
總的來說,雖然Delphi沒有提供直接將JSON日期格式轉為Unix時間戳的函數,但我們可以編寫自定義代碼來實現這一功能。如果你遇到了這個問題,希望本文能夠幫助到你。