Delphi两则:1、PDT时间转北京时间,2、条件编译

日总是我哥 2008-10-22 10:58:34
做了个小东西,时间是PDT,而且月份也是英文的。写了个小函数,有用得着的直接copy去:)
有更好的实现方法,请回复。

uses DateUtils;

function ConvertPDTDateTime(Str: string): TDateTime;
const
EngMonthName: array[1..12] of string = ('Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun',
'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec');

var
I: Integer;

fs: TFormatSettings;
begin
fs.ShortDateFormat := 'mm-dd-yy';
fs.LongDateFormat := 'mm-dd-yyyyy';
fs.DateSeparator := '-';
fs.TimeSeparator := ':';
fs.LongTimeFormat := 'hh:nn:ss';
fs.ShortTimeFormat := 'hh:nn:ss';


fs.TwoDigitYearCenturyWindow := 50;

for I := 1 to 12 do
begin
Str := StringReplace(Str, EngMonthName[I], IntToStr(I), [rfIgnoreCase]);
end;

Result := StrToDateTime(Str, fs);

//PDT是Pacific Daylight Time的简称,意思是太平洋夏令时
//指的是美国西部时间
//-8区 和北京平时差16小时 4-10月夏令时差15小时
if Pos('PDT', Str) > 0 then
begin
if MonthOf(Result) in [4..10] then
Result := IncHour(Result, 15)
else
Result := IncHour(Result, 16);
end;
end;



调用方法:ConvertPDTDateTime('Oct-21-08 12:01:10 PDT')
----------------------------------------
关于条件编译:
如果你希望使用命令行dcc32.exe编译工程,请cd到dpr所在目录,否则条件变量可能无法生效(至少我{$I xxx.inc}进来的无效。



你的可用分比别人少吧!每天发帖即可得 30 可用分!
...全文
792 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
日总是我哥 2008-10-23
  • 打赏
  • 举报
回复
是的,现在又来搞10分。
luxuewei5214 2008-10-22
  • 打赏
  • 举报
回复
发贴加回帖,你就40分了,哈哈,真会过啊
日总是我哥 2008-10-22
  • 打赏
  • 举报
回复
回帖是一种美德!传说每天回帖即可获得 10 分可用分!

828

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 非技术区
社区管理员
  • 非技术区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧