procedure TDateTimeApi.AutoEditUserComputerDateFormat; var p: DWORD; MyWinDate,MyWinTime: string; MyDateTimeChange: Boolean; begin //----------------------------- { 2014.02.18增加判断功能,当电脑时间不是正确对格式时在调用函数来修改,当是正确的格式的时候,就没有必要,调用函数 因为这个修改系统时间的函数会耗费大量的软件启动时间,而且还会出现闪屏的现象. 不正常的电脑时间有: 1.2014/02/18, 2014-2-18(应该是02) 2.时间--18点49分, 18:2:59(应该是02) } //首选获取系统的时间,这两个函数返还的是系统的时间,是没有经过转化的 MyWinDate := DateToStr(Date); MyWinTime := TimeToStr(Time); MyDateTimeChange := False; //----------------------------- //修改日期,短日期 if Pos('-',MyWinDate) = 0 then begin SetLocaleInfo(LOCALE_USER_DEFAULT,LOCALE_SSHORTDATE,pchar('yyyy-MM-dd')); MyDateTimeChange := True; end else begin //2014-2-18,这种字数不全的情况 if Length(MyWinDate) <> 10 then begin SetLocaleInfo(LOCALE_USER_DEFAULT,LOCALE_SSHORTDATE,pchar('yyyy-MM-dd')); MyDateTimeChange := True; end; end; //----------------------------- //修改时间 if Pos(':',MyWinTime) = 0 then begin SetLocaleInfo(LOCALE_USER_DEFAULT,LOCALE_STIMEFORMAT,pchar('HH:mm:ss')); MyDateTimeChange := True; end else begin //9:57:00,这种字数不全的情况 if Length(MyWinTime) <> 8 then begin SetLocaleInfo(LOCALE_USER_DEFAULT,LOCALE_STIMEFORMAT,pchar('HH:mm:ss')); MyDateTimeChange := True; end; end; //----------------------------- //设置完成后必须调用,通知其他程序格式已经更改,否则即使是程序自身也不能使用新设置的格式 if MyDateTimeChange then begin SendMessageTimeOut(HWND_BROADCAST,WM_SETTINGCHANGE,0,0,SMTO_ABORTIFHUNG,10,p); end; end;
本文来自博客园,作者:del88,转载请注明原文链接:https://www.cnblogs.com/del88/p/3553716.html
浙公网安备 33010602011771号