Delphi Xe 中如何把日期格式统一处理,玩转 TDatetime

日期格式的处理总是会很复杂,因为不同的环境日 期格式也不一样。为了程序统一处理,  最好把格式给统一了:

可以在程序的初始化段:

  FormatSettings.ShortDateFormat := ‘dd/mm/yyyy‘;
  FormatSettings.DateSeparator := ‘/‘;
  for I := 1 to 12 do
    System.SysUtils.FormatSettings.ShortMonthNames[i] := sNames[i];

其中 sNames 是自己定义的月份名的全局数组, 如果你显示的格式例如: ‘dd mmm yyyy‘ 那 ‘mmm‘ 就显示的这个数组中对应的string, 定义可以是:

const
  sNames: array[1..12] of string = ( ‘Jan‘,‘Feb‘,‘Mar‘,‘Apr‘,‘May‘,‘Jun‘,‘Jul‘,‘Aug‘,‘Sep‘,‘Oct‘,‘Nov‘,‘Dec‘ );

TFormatSettings中一些属性的解释:

DateSeparator :Char 日期分隔符,用于分隔年月日
TimeSeparator :Char 时间分隔符,用于分隔小时,分钟,秒
ShortDateFormat:String 区域设置中短日期格式的定义。
LongDateFormat :String 区域设置中长日期格式的定义。
ShortTimeFormat:String 区域设置中短时间格式的定义。
LongTimeFormat :String 区域设置中长时间格式的定义。
TimeAMString :String 用来表示上午的字符串
TimePMString :String 用来表示下午的字符串
ShortMonthNames:array[1..12] of String; 用于缩略表示月份名称的数组,就是在使用FormatDateTime时显示的mmm标识的字符串
LongMonthNames:array[1..12] of String; 用于完整表示月份名称的数组,就是在使用FormatDateTime时显示的mmmm标识的字符串
ShortDayNames :array[1..7] of String; 用于缩略表示星期名称的数组,就是在使用FormatDateTime时显示的ddd标识的字符串
LongDayNames :array[1..7] of String; 用于完整表示星期名称的数组,就是在使用FormatDateTime时显示的ddd标识的字符串
TwoDigitYearCenturyWindow:Word = 50; 在使用两位年份时的起始年份。

时间: 2024-10-15 22:38:40

Delphi Xe 中如何把日期格式统一处理,玩转 TDatetime的相关文章

[转]:Delphi XE中泛型数组的使用范例

Delphi XE中泛型数组的使用范例,下面的范例简单的使用了泛型字符串数组,如用 TArray 代替 array of Word, 还可以使用 TArray 类提供的算法(就是少了点). uses Generics.Collections, Generics.Defaults; {测试 TArray 的 Sort 方法} procedure TForm1.Button1Click(Sender: TObject); var arr: TArray<string>; //同 array of

spring mvc3中JACKSON序列化日期格式的问题 - 墙头草的Java - BlogJava

body { font-family: "Microsoft YaHei UI","Microsoft YaHei",SimSun,"Segoe UI",Tahoma,Helvetica,Sans-Serif,"Microsoft YaHei", Georgia,Helvetica,Arial,sans-serif,宋体, PMingLiU,serif; font-size: 10.5pt; line-height: 1.5;

Android中的时间日期格式如何定义

1.如何保证日期格式与系统设定的一致: Date date = new Date(location.getTime()); DateFormat dateFormat = android.text.format.DateFormat.getDateFormat(getApplicationContext()); mTimeText.setText("Time: " + dateFormat.format(date)); 注意此处应该应该用 android.text.format.Dat

poi中如何自定义日期格式

1. poi的“Quick Guide”中提供了 “How to create date cells ”例子来说明如何创建日期单元格,代码如下: [java] view plain copy HSSFCellStyle cellStyle = wb.createCellStyle(); cellStyle.setDataFormat(HSSFDataFormat.getBuiltinFormat("m/d/yy h:mm")); cell = row.createCell((short

php中时间戳和日期格式的转换

一,PHP时间戳函数获取指定日期的unix时间戳 strtotime(”2009-1-22″) 示例如下: echo strtotime(”2009-1-22″) 结果:1232553600 说明:返回2009年1月22日0点0分0秒时间戳 二,PHP时间戳函数获取英文文本日期时间 示例如下: 便于比较,使用date将当时间戳与指定时间戳转换成系统时间 (1)打印明天此时的时间戳strtotime(”+1 day”) 当前时间:echo date(”Y-m-d H:i:s”,time()) 结果

Delphi XE中使用dbExpress连接MySQL数据库疑难问题解决(对三层的例子配置有帮助)

Delphi IDE中包含一个Data Explorer的组件,如下图所示: 该组件基于dbExpress(包含TSQLConnection.TSQLDataSet.TSQLQuery.TSQLStoredProc.TSQLTable.TsqlServerMethod.TSQLMonitor.TSimpleDataSet).但是因为该组件只提供了各种数据库的抽象驱动,没有提供底层的与数据库直接交互的驱动库,因此,要想使用具体某种数据库,还需要搭配提供商驱动.本文以Delphi XE在Window

让delphi程序不受WINDOWS日期格式的影响(使用SetLocaleInfo函数和Application.UpdateFormatSettings)

如果WINDOWS系统的短日期格式为“yyyy/m/d”,执行下面的代码会报错:2013-01-29 00:00:00不是合法的日期procedure TFrmQuerySale.FormShow(Sender: TObject);varsDate: string;begininherited;// 默认查当天的销售数据sDate := FormatDateTime('yyyy-mm-dd', Now);DateTimePicker1.DateTime := StrToDateTime(sDat

Delphi XE中使用dbExpress连接MySQL数据库疑难问题解决

Delphi IDE中包含一个Data Explorer的组件,如下图所示: 该组件基于dbExpress(包含TSQLConnection.TSQLDataSet.TSQLQuery.TSQLStoredProc.TSQLTable.TsqlServerMethod.TSQLMonitor.TSimpleDataSet).但是因为该组件只提供了各种数据库的抽象驱动,没有提供底层的与数据库直接交互的驱动库,因此,要想使用具体某种数据库,还需要搭配提供商驱动.本文以Delphi XE在Window

delphi程序不受WINDOWS日期格式的影响

如果WINDOWS系统的短日期格式为“yyyy/m/d”,执行下面的代码会报错:2013-01-29 00:00:00不是合法的日期 在主程序打开时更改windows日期格式 //更改windows日期格式 SetLocaleInfo(LOCALE_SYSTEM_DEFAULT, LOCALE_SSHORTDATE, ‘yyyy-MM-dd‘);Application.UpdateFormatSettings := False; 但问题又来了,现在是win10的系统,用户还一定得要用管理员权限打