程序中设置日期时间格式为YYYY.MM.DD HH:MM:SS, 但是经常会变成YYYY-M-D这种格式, 怎么回事?(100)

  • 主题发起人 主题发起人 黑星星
  • 开始时间 开始时间

黑星星

Unregistered / Unconfirmed
GUEST, unregistred user!
感觉和IDTCPServer控件的使用有关, 其他没有这个控件的程序没这个问题。有人碰到过这样的问题吗?
 
俺没碰到这问题
 
用FormatDateTime格式化一下~~
 
操作系统 地区设置下日期显示的格式
 
不管操作系统是日期格式怎样,在程序中设了格式,就应该一直是那种格式,不应该莫名其妙的变了,但现在就出现这种情况,很纳闷。网上也找不到类似问题。
 
procedure pSetDateTimeFormat;begin SysLocale.PriLangID :=LANG_CHINESE; DateSeparator :='-'; LongDateFormat :='yyyy-MM-dd'; ShortDateFormat :='yyyy-MM-dd'; TimeSeparator :=':'; LongTimeFormat :='HH:MM:SS'; TimeAMString :='上午'; TimePMString :='下午'; SetLocaleInfoA(LOCALE_SYSTEM_DEFAULT,LOCALE_SSHORTDATE,PChar(ShortDateFormat)); SetLocaleInfoA(LOCALE_SYSTEM_DEFAULT,LOCALE_SLONGDATE ,PChar(LongDateFormat)) ;end;只改程序的日期格式,不改操作系统
 
设了 ShortDateFormat ,日期格式就起作用了。SetLocaleInfoA会把操作系统本身的日期格式也变掉了,反而不好。
 
可以保存一个TFormatSettings格式,在用的时候就这个格式来设置.一般格式化函数如dateTostr or strToDate都有一个TformatSettings参数,就用程序中设置好的参数代进来.这样不管他本地日期格式怎么变,都不影响程序的使用了.可以先用GetLocaleFormatSettings()取得系统格式.
 
恩,我现在就是这样做的,不管变成什么格式,都用我自定的格式转换。就是找不到出错原因,觉得奇怪。
 
procedure pSetDateTimeFormat;begin SysLocale.PriLangID :=LANG_CHINESE; DateSeparator :='-'; LongDateFormat :='yyyy-MM-dd'; ShortDateFormat :='yyyy-MM-dd'; TimeSeparator :=':'; LongTimeFormat :='HH:MM:SS'; TimeAMString :='上午'; TimePMString :='下午'; SetLocaleInfoA(LOCALE_SYSTEM_DEFAULT,LOCALE_SSHORTDATE,PChar(ShortDateFormat)); SetLocaleInfoA(LOCALE_SYSTEM_DEFAULT,LOCALE_SLONGDATE ,PChar(LongDateFormat)) ;end;只改程序的日期格式,不改操作系统 我试过了,这个会改操作系统
 
用FormatDateTime
 
您检查一下操作系统-》“控制面板”-》“区域设置”中的日期时间格式
 
你是寫入時日期顯示不滿意呢?還是查詢時日期顯示不滿意呢?
 
看来没人清楚这个问题,结贴了。
 
后退
顶部