请问如何用delphi直接把系统日期设置成yyyy-mm-dd的形式?还有就是如何与服务器的时间同步?

解决方案 »

  1.   

    procedure IniDateFormat();
    begin
      SetLocaleInfo(LOCALE_SLONGDATE, LOCALE_SDATE, '-');
      SetLocaleInfo(LOCALE_SLONGDATE, LOCALE_SSHORTDATE, 'yyyy-mm-dd');
    end;
      

  2.   

    修改系统的日期格式    
      var 
    str: string;beginstr := RadioGroup1.Items.Strings[RadioGroup1.ItemIndex];if SetLocaleInfoa(LOCALE_SYSTEM_DEFAULT, LOCALE_SSHORTDATE , PChar(str)) thenbeginshowmessage('short OK!');thenSendMessageA(HWND_BROADCAST, WM_SETTINGCHANGE, 0, 0);end;end;为了方便测试我用了radioGroup,items 内容如下yy-d-md-yy-mm-d-yyyy-m-dyyyy-m-dyyyy-d-m 传进参数必须 null-terminate 字符串指针。我用 pchar ,而且字符串格式只能写成这样 'm-d'而不是'mm-dd'('yyyy'可以用),不然改不了另外delphi 函数 DateTostr,DateTimeTostr,都调用短格式。长格式很灵活。随便改.RadioGroup Items 如下yyy'年'dd'日'-mmd-yyyy-mmmm-dd-yyyyyyyy-mm-dd代码如下varstr: string;beginstr := RadioGroup2.Items.Strings[RadioGroup2.ItemIndex];if SetLocaleInfoa(LOCALE_SYSTEM_DEFAULT, LOCALE_SLONGDATE , PChar(str)) thenbeginshowmessage('Loan OK!');SendMessageA(HWND_BROADCAST, WM_SETTINGCHANGE, 0, 0);end;end;//
     
     
    同步SQL服务器时间    
      procedure AnsyTime(const DatabaseName:string); 
    vartd: _SYSTEMTIME;ft: FILETIME;begin{ DONE -oKingron -cOther : 同步服务器时间 }with TQuery.Create(Self) dotryDatabaseName:=DatabaseName;SQL.Clear;SQL.Text := 'select td=getdate()';Open;DateTimeToSystemTime(FieldByName('td').AsDateTime, td);SystemTimeToFileTime(td,ft);LocalFileTimeToFileTime(ft,ft);FileTimeToSystemTime(ft,td);SetSystemTime(td);finallyFree;end;end; 
     
      

  3.   

    tanqth(青蛙) 的方法就能实现了。
    如果我回答也是这些东西,如果不明白就没有办法了。你先考下去,自己再琢磨吧。
      

  4.   

    无特别需要,不要更改系统格式,而只在自己的应用程序中更改格式。
    Delphi 为我们提供了一些全局变量,通过设置这些变量的值,可以在应用程序中指定时间格式。
    var CurrencyString: string;var CurrencyFormat: Byte;
    var NegCurrFormat: Byte;
    var ThousandSeparator: Char;
    var DecimalSeparator: Char;
    var CurrencyDecimals: Byte;
    var DateSeparator: Char;
    var ShortDateFormat: string;
    var LongDateFormat: string;
    var TimeSeparator: Char;
    var TimeAMString: string;
    var TimePMString: string;
    var ShortTimeFormat: string;
    var LongTimeFormat: string;var ShortMonthNames: array[1..12] of string;
    var LongMonthNames: array[1..12] of string;
    var ShortDayNames: array[1..7] of string;
    var LongDayNames: array[1..7] of string;
    var SysLocale: TSysLocale;
    var EraNames: array[1..7] of string;
    var EraYearOffsets: array[1..7] of Integer;
    var TwoDigitYearCenturyWindow: Word = 50;var ListSeparator: Char;