afr*_*ier 13
Delphi TZDB可能会有用.它的主要特点是有一个使用tz数据库处理时间的类,如果它包含"足够历史"数据,它将允许您使用UTC作为中介.tz数据库旨在为世界各地的所有时区制定规则,以及自Unix时代以来与UTC相关的闰年,夏令时,日历变更等各种时间变化(午夜,1月1日, 1970年).
安装软件包后,使用方法将如下所示:
function ConvertFromGMTToBST(const AGMTTime: TDateTime): TDateTime;
var
tzGMT, tzBST: TTimeZone;
UTCTime: TDateTime;
begin
tzGMT := TBundledTimeZone.GetTimeZone('GMT');
tzBST := TBundledTimeZone.GetTimeZone('BST');
UTCTime := tzGMT.ToUniversalTime(AGMTTime);
Result := tzBST.ToLocalTime(UTCTime);
end;
Run Code Online (Sandbox Code Playgroud)
以上依赖于一些假设.首先,这GMT和BST在TZ数据库的有效别名.如果没有,那么你需要找到最近的城市.(例如America/New_York).第二个是我非常确定我的代码是特定于Delphi XE +的.TZDB声称可以使用Delphi 6和更新版本(以及FreePascal),因此对工作的调整应该是次要的.
不幸的是,区域日期和时间非常复杂,特别是如果你在20世纪之前延伸很久.
| 归档时间: |
|
| 查看次数: |
1410 次 |
| 最近记录: |