专注于互联网--专注于架构

最新标签
网站地图
文章索引
Rss订阅

首页 »DotNet » string.format日期:c# 日期函数 string.Format »正文

string.format日期:c# 日期函数 string.Format

来源: 发布时间:星期日, 2009年8月16日 浏览:159次 评论:0
c# 日期

DateTime dt = DateTime.Now;
Label1.Text = dt.;//2005-11-5 13:21:25
Label2.Text = dt.ToFileTime.;//127756416859912816
Label3.Text = dt.ToFileTimeUtc.;//127756704859912816
Label4.Text = dt.ToLocalTime.;//2005-11-5 21:21:25
Label5.Text = dt.ToLongDateString.;//2005年11月5日
Label6.Text = dt.ToLongTimeString.;//13:21:25
Label7.Text = dt.ToOADate.;//38661.5565508218
Label8.Text = dt.ToShortDateString.;//2005-11-5
Label9.Text = dt.ToShortTimeString.;//13:21
Label10.Text = dt.ToUniversalTime.;//2005-11-5 5:21:25
?2005-11-5 13:30:28.4412864
Label1.Text = dt.Year.;//2005
Label2.Text = dt.Date.;//2005-11-5 0:00:00
Label3.Text = dt.DayOfWeek.;//Saturday
Label4.Text = dt.DayOfYear.;//309
Label5.Text = dt.Hour.;//13
Label6.Text = dt.Millisecond.;//441
Label7.Text = dt.Minute.;//30
Label8.Text = dt.Month.;//11
Label9.Text = dt.Second.;//28
Label10.Text = dt.Ticks.;//632667942284412864
Label11.Text = dt.TimeOfDay.;//13:30:28.4412864
Label1.Text = dt.;//2005-11-5 13:47:04
Label2.Text = dt.AddYears(1).;//2006-11-5 13:47:04
Label3.Text = dt.AddDays(1.1).;//2005-11-6 16:11:04
Label4.Text = dt.AddHours(1.1).;//2005-11-5 14:53:04
Label5.Text = dt.AddMilliseconds(1.1).;//2005-11-5 13:47:04
Label6.Text = dt.AddMonths(1).;//2005-12-5 13:47:04
Label7.Text = dt.AddSeconds(1.1).;//2005-11-5 13:47:05
Label8.Text = dt.AddMinutes(1.1).;//2005-11-5 13:48:10
Label9.Text = dt.AddTicks(1000).;//2005-11-5 13:47:04
Label10.Text = dt.CompareTo(dt).;//0
//Label11.Text = dt.Add(?).;//问号为个时间段
Label1.Text = dt.Equals("2005-11-6 16:11:04").;//False
Label2.Text = dt.Equals(dt).;//True
Label3.Text = dt.GetHashCode.;//1474088234
Label4.Text = dt.GetType.;//.DateTime
Label5.Text = dt.GetTypeCode.;//DateTime

Label1.Text = dt.GetDateTimeFormats('s')[0].;//2005-11-05T14:06:25
Label2.Text = dt.GetDateTimeFormats('t')[0].;//14:06
Label3.Text = dt.GetDateTimeFormats('y')[0].;//2005年11月
Label4.Text = dt.GetDateTimeFormats('D')[0].;//2005年11月5日
Label5.Text = dt.GetDateTimeFormats('D')[1].;//2005 11 05
Label6.Text = dt.GetDateTimeFormats('D')[2].;//星期 6 2005 11 05
Label7.Text = dt.GetDateTimeFormats('D')[3].;//星期 6 2005年11月5日
Label8.Text = dt.GetDateTimeFormats('M')[0].;//11月5日
Label9.Text = dt.GetDateTimeFormats('f')[0].;//2005年11月5日 14:06
Label10.Text = dt.GetDateTimeFormats('g')[0].;//2005-11-5 14:06
Label11.Text = dt.GetDateTimeFormats('r')[0].;//Sat, 05 Nov 2005 14:06:25 GMT

或者dt.("yyyy年MM月dd日");//2005年11月5日
dt.("yyyy-MM-dd");//2005-11-5日
以此类推……

Label1.Text =? .Format("{0:d}",dt);//2005-11-5
Label2.Text =? .Format("{0:D}",dt);//2005年11月5日
Label3.Text =? .Format("{0:f}",dt);//2005年11月5日 14:23
Label4.Text =? .Format("{0:F}",dt);//2005年11月5日 14:23:23
Label5.Text =? .Format("{0:g}",dt);//2005-11-5 14:23
Label6.Text =? .Format("{0:G}",dt);//2005-11-5 14:23:23
Label7.Text =? .Format("{0:M}",dt);//11月5日
Label8.Text =? .Format("{0:R}",dt);//Sat, 05 Nov 2005 14:23:23 GMT
Label9.Text =? .Format("{0:s}",dt);//2005-11-05T14:23:23
Label10.Text = .Format("{0:t}",dt);//14:23
Label11.Text = .Format("{0:T}",dt);//14:23:23
Label12.Text = .Format("{0:u}",dt);//2005-11-05 14:23:23Z
Label13.Text = .Format("{0:U}",dt);//2005年11月5日 6:23:23
Label14.Text = .Format("{0:Y}",dt);//2005年11月
Label15.Text = .Format("{0}",dt);//2005-11-5 14:23:23?
Label16.Text = .Format("{0:yyyyMMddHHmmssffff}",dt); //yyyymm等可以设置,比如Label16.Text = .Format("{0:yyyyMMdd}",dt);
绑定也适用:例:<%# .Format("{0:yyyy.MM.dd}",Eval("sj"))%>

Format是个很常用却又似乎很烦思路方法本人试图对这个思路方法帮助进行些翻译
让它有个完整概貌以供大家查询的用:

首先看它声明:
function Format(const Format: ; const Args: .gif' /> of const): ; overload;
事实上Format思路方法有两个种形式另外种是 3个参数主要区别在于它是线程安全
但并不多用所以这里只对第个介绍:

function Format(const Format: ; const Args: .gif' /> of const): ; overload;
Format参数是个格式用于格式化Args里面Args又是什么呢
它是个变体即它里面可以有多个参数而且每个参数可以区别
如以下例子:
Format(’my name is %6s’,[’wind’]);
返回后就是
my name is wind

现在来看Format参数详细情况:
Format里面可以写普通比如’my name is’
但有些格式指令具有特殊意义比如"%6s"

格式指令具有以下形式:
"%" [index ":"] ["-"] [width] ["." prec] type
它是以"%"开始,而以type结束type表示个具体类型中间是用来
格式化type类型指令是可选

先来看看type,type可以是以下:
d 十制数表示个整型值
u 和d样是整型值但它是无符号而如果它对应值是负则返回时
个232次方减去这个绝对值
如:Format(’this is %u’,[-2]);
返回是:this is 4294967294
f 对应浮点数
e 科学表示法对应整型数和浮点数
比如Format(’this is %e’,[-2.22]);
返回是:this is -2.22000000000000E+000
下再介绍说明如果将数精度缩小
g 这个只能对应浮点型且它会将值中多余数去掉
比如Format(’this is %g’,[02.200]);
返回是:this is 2.2
n 只能对应浮点型将值转化为号码形式个例子就明白了
Format(’this is %n’,[4552.2176]);
返回是this is 4,552.22
注意有两点是只表示到小数后两位下说如何消除这种情况
2是即使小数没有被截断它也不会也像整数部分样有逗号来分开
m 钱币类型但有关货币类型有更好格式化思路方法这里只是简单格式化
另外它只对应于浮点值
Format(’this is %m’,[9552.21]);
返回:this is ¥9,552.21
p 对应于指针类型返回值是指针地址以十 6进制形式来表示
例如:
var X:eger;
p:^eger;
begin
X:=99;
p:=@X;
Edit1.Text:=Format(’this is %p’,[p]);
end;
Edit1内容是:this is 0012F548
s 对应串类型不用多说了吧
x 必须是个整形值以十 6进制形式返回
Edit1.Text:=Format(’this is %X’,[15]);
返回是:this is F

类型讲述完毕下面介绍格式化Type指令:
[index ":"] 这个要如何表达呢个例子
Format(’this is %d %d’,[12,13]);
其中第个%d索引是0第 2个%d是1所以显示时候
是这样 this is 12 13

而如果你这样定义:
Format(’this is %1:d %0:d’,[12,13]);
那么返回串就变成了
this is 13 12
现在明白了吗[index ":"] 中index指示Args中参数显示
顺序

还有种情况如果这样Format(’%d %d %d %0:d %d’, [1, 2, 3, 4])
将返回1 2 3 1 2
如果你想返回是1 2 3 1 4必须这样定:
Format(’%d %d %d %0:d %3:d’, [1, 2, 3, 4])
但用时候要注意索引不能超出Args中个数不然会引起异常
如Format(’this is %2:d %0:d’,[12,13]);
由于Args中只有12 13 两个数所以Index只能是0或1这里为2就错了
[width] 指定将被格式化值占宽度个例子就明白了
Format(’this is %4d’,[12]);
输出是:this is 12
这个是比较容易不过如果Width值小于参数长度则没有效果
如:Format(’this is %1d’,[12]);
输出是:this is 12
["-"] 这个指定参数向左齐和[width]合在起最可以看到效果:
Format(’this is %-4d,yes’,[12]);
输出是:this is 12 ,yes

["." prec] 指定精度对于浮点数效果最佳:
Format(’this is %.2f’,[’1.1234]);
输出 this is 1.12
Format(’this is %.7f’,[’1.1234]);
输了 this is 1.1234000

而对于整型数如果prec比如整型位数小则没有效果
反的比整形值位数大则会在整型值前面以0补的
Format(’this is %.7d’,[1234]);
输出是:this is 0001234]

对于刚好和整型值相反如果prec比串型长度大
则没有效果反的比串型长度小则会截断尾部
Format(’this is %.2s’,[’1234’]);
输出是 this is 12

而上面说这个例子:
Format(’this is %e’,[-2.22]);
返回是:this is -2.22000000000000E+000
如何去掉多余0呢这个就行啦
Format(’this is %.2e’,[-2.22]);

好了个总算讲完了应该对他应用很熟悉了吧

///////////////////////////////////////////////////////////////
2 FormatDateTime使用方法
声明为:
function FormatDateTime(const Format: ; DateTime: TDateTime): ;
overload;
当然和Format样还有但这里只介绍常用
Format参数是个格式化DateTime是时间类型返回值是种格式化后


重点来看Format参数中指令
c 以短时间格式显示时间即全部是数字表示
FormatdateTime(’c’,now);
输出为:2004-8-7 9:55:40
d 对应于时间中日期日期是位则显示两位则显示两位
FormatdateTime(’d’,now);
输出可能为1~31
dd 和d意义但它始终是以两位来显示
FormatdateTime(’dd’,now);
输出可能为01~31
ddd 显示是星期几
FormatdateTime(’ddd’,now);
输出为: 星期 6
dddd 和ddd显示
但上面两个如果在其他国家可能不
ddddd 以短时间格式显示年月日
FormatdateTime(’ddddd’,now);
输出为:2004-8-7
dddddd 以长时间格式显示年月日
FormatdateTime(’dddddd’,now);
输出为:2004年8月7日
e/ee/eee/eeee 以相应位数显示年
FormatdateTime(’ee’,now);
输出为:04 (表示04年)
m/mm/mmm/mmmm 表示月
FormatdateTime(’m’,now);
输出为:8
FormatdateTime(’mm’,now);
输出为 08
FormatdateTime(’mmm’,now);
输出为 8月
FormatdateTime(’mmmm’,now);
输出为 8月
和ddd/dddd 在其他国家可能区别
yy/yyyy 表示年
FormatdateTime(’yy’,now);
输出为 04
FormatdateTime(’yyyy’,now);
输出为 2004
h/hh,n/nn,s/ss,z/zzz 分别表示小时秒,毫秒
t 以短时间格式显示时间
FormatdateTime(’t’,now);
输出为 10:17
tt 以长时间格式显示时间
FormatdateTime(’tt’,now);
输出为10:18:46
ampm 以长时间格式显示上午还是下午
FormatdateTime(’ttampm’,now);
输出为:10:22:57上午

大概如此如果要在Format中加普通可以用双引号隔开那些
特定义这样普通串中如果含特殊就不会被显示为
时间格式啦:
FormatdateTime(’"today is" c’,now);
输出为:today is 2004-8-7 10:26:58
时间中也可以加"-"或"\"来分开日期:
FormatdateTime(’"today is" yy-mm-dd’,now);
FormatdateTime(’"today is" yy\mm\dd’,now);
输出为: today is 04-08-07
也可以用":"来分开时间
FormatdateTime(’"today is" hh:nn:ss’,now);
输出为:today is 10:32:23

/////////////////////////////////////////////////////////////////
3.FormatFloat使用方法

常用声明:
function FormatFloat(const Format: ; value: Extended): ; overload;
和上面样Format参数为格式化指令value为Extended类型
为什么是这个类型它是所有浮点值中表示范围最大如果传入该思路方法参数
比如Double或者其他则可以保存不会超出范围

关键是看Format参数使用方法
0 这个指定相应位数指令
比如:FormatFloat(’000.000’,22.22);
输出就是022.220
注意如果整数部分0个数小于value参数中整数位数则没有效果
如:FormatFloat(’0.00’,22.22);
输出是:22.22
但如果小数部分0小于value中小数倍数则会截去相应小数和位数
如:FormatFloat(’0.0’,22.22);
输出是:22.2

也可以在整数0中指定逗号这个整数位数必须大于3个才会有逗号出句
FormatFloat(’0,000.0’,2222.22);
输出是:2,222.2
如果这样FormatFloat(’000,0.0’,2222.22);
输出还是:2,222.2
注意它规律

# 和0使用方法目前我还没有测出有什么区别
FormatFloat(’##.##’,22.22);
输出是:22.00

E 科学表示法看几个例子大概就明白了
FormatFloat(’0.00E+00’,2222.22);
输出是 2.22E+03
FormatFloat(’0000.00E+00’,2222.22);
输出是 2222.22E+00
FormatFloat(’00.0E+0’,2222.22);
22.2E+2

Format 返回

返回 Variant (String)其中含有个表达式它是根据格式表达式中指令来格式化

语法

Format(expression[, format[, firstdayofweek[, firstweekofyear]]])

Format 语法具有下面几个部分:

部分 介绍说明
expression 必要参数任何有效表达式
format 可选参数有效命名表达式或用户自定义格式表达式
firstdayofweek 可选参数常数表示星期
firstweekofyear 可选参数常数表示

Format可按预定格式显示或打印个Date变量如:
Pr Format(d, “general date”) `99-5-23 11:45:34
Pr Format(d, “long date”) `1999年5月23日
Pr Format(d, “medium date”) `99-05-23
Pr Format(d, “ date”) `99-5-23
Pr Format(d, “long time”) `11:45:34
Pr Format(d, “medium time”) `11:45 AM
Pr Format(d,“ time”) `11:45
Format也允许你自己规定显示格式
0

相关文章

读者评论

发表评论

  • 昵称:
  • 内容: