Q&A

  • 컴퓨터의 날짜와 형식을 바꾸려고 하고 싶습니다.
컴퓨터의 날짜와 시간을 바꾸고 싶습니다.
window xp 이구요 날짜를 현재 날짜의 형식을
yyyy-mm-dd 형식에서 yyyy.mm.dd 형식으로 바꾸고 싶습니다.


procedure udf_checkDate();
var
  Succeeds: Boolean;
  SysLCID: LCID;
  Registry : TRegistry;
begin
  SysLCID := GetSystemDefaultLCID;
  Succeeds := SetLocaleInfo( SysLCID, LOCALE_SSHORTDATE, 'yyyy-mm-dd' );
  if Succeeds then
      ShowMessage(' 날짜설정이 바뀌었습니다.');

  SysUtils.ShortDateFormat := 'yyyy-mm-dd';
  SysUtils.DateSeparator := '-';

  // 레지스트에서 형식 변경
  // 재부팅을 해야 함
  Registry := TRegistry.Create;
  Registry.RootKey := HKEY_CURRENT_USER;
  Registry.OpenKey('Control PanelInternational', True);
  Registry.WriteString('sShortDate', 'yyyy-mm-dd');
  Registry.Free;
end;


이렇게 세개를 다했는데요 델파이상에서 형식을 바뀌는것 같은데
컴퓨터의 국가별옵션에 가면 상태는 그대로 입니다.
어떻게 해야 할가요?

그리고 현재 표준날짜와 시간을 갖고 와서 컴퓨터의 날짜와 시간을 변경하하고 싶은데 가능한가요?
1  COMMENTS
  • Profile
    석주현 2008.05.21 08:08
    코드를 참조하세요.

    <!--CodeS-->
    procedure udf_checkDate();
    const
      DATE_STR : String = 'yyyy.MM.dd';
    var
      Registry : TRegistry;
    begin
      Registry := TRegistry.Create;
      Registry.RootKey := HKEY_CURRENT_USER;
      Registry.OpenKey('\Control Panel\International', True);
      Registry.WriteString('sShortDate', DATE_STR);

      Registry.RootKey := HKEY_USERS;
      Registry.OpenKey('\.DEFAULT\Control Panel\International', True);
      Registry.WriteString('sShortDate', DATE_STR);

      Registry.Free;
      setlocaleinfo(LOCALE_SYSTEM_DEFAULT,LOCALE_SDATE, pchar(DATE_STR));
      PostMessage(HWND_BROADCAST, WM_SETTINGCHANGE, 0, 0);
    end;
    <!--CodeE-->