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
相关文章读者评论发表评论 |