声明:
//记录系统日期格式: GSysShortDate, GSysLongDate, GSysTimeFormat: string;
//获取系统日期格式: procedure GetSysDateTimeFormat(); //设置系统日期格式: procedure SetSysDateTimeFormat(GSysShortDate, GSysLongDate, GSysTimeFormat: string);
实现: //获取系统日期格式: procedure GetSysDateTimeFormat(); var
i: Integer; buf: PChar; begin getmem(buf, 100); i := 100; // i必须在调用前赋值为buf缓冲区的长度。如果设为0或负值,将取不到设置的值 GetLocaleInfo(LOCALE_USER_DEFAULT, LOCALE_SSHORTDATE, buf, i); // 取当前用户设置,短日期格式。 GSysShortDate := string(buf); i := 100; GetLocaleInfo(LOCALE_USER_DEFAULT, LOCALE_SLONGDATE, buf, i); // 取长日期格式 GSysLongDate := string(buf); i := 100; GetLocaleInfo(LOCALE_USER_DEFAULT, LOCALE_STIMEFORMAT, buf, i); // 取时间格式 GSysTimeFormat := string(buf); freemem(buf); end;
// 设置系统日期格式: procedure SetSysDateTimeFormat(GSysShortDate, GSysLongDate, GSysTimeFormat: string); var p: DWord; begin SetLocaleInfo(LOCALE_USER_DEFAULT, LOCALE_SSHORTDATE, PChar(GSysShortDate)); // 短日期 SetLocaleInfo(LOCALE_USER_DEFAULT, LOCALE_SLONGDATE, PChar(GSysLongDate)); SetLocaleInfo(LOCALE_USER_DEFAULT, LOCALE_STIMEFORMAT, PChar(GSysTimeFormat)); // 设置时间 SendMessageTimeOut(HWND_BROADCAST, WM_SETTINGCHANGE, 0, 0, SMTO_ABORTIFHUNG, 10, p); // 设置完成后必须调用,通知其他程序格式已经更改,否则即使是程序自身也不能使用新设置的格式 end;
使用: GetSysDateTimeFormat(); if GSysShortDate <> 'yyyy-MM-dd' then SetSysDateTimeFormat('yyyy-MM-dd', 'yyyy''年''M''月 ''d''日''', 'HH:mm:ss');
|
请发表评论