分享

c#时间格式化字符串详解

 TUSHUGUANMM 2011-01-10
首页 资讯 研发 移动 云计算 空间 学生 论坛 博客 下载 网摘 程序员 外包 书店 CTO俱乐部 TUP 培训充电 高校club
Hi
条新通知
登录注册欢迎
退出
我的博客
配置
写文章
文章管理
博客首页
 全站 当前博客 空间博客好友相册留言用户操作
[留言]  [发消息]  [加为好友] 
A BUID:abu406
共3694次访问,排名2万外,好友2人,关注者2人。
用音乐倾听彼此~~
A BU的文章
原创 17 篇
翻译 0 篇
转载 3 篇
评论 4 篇
订阅我的博客
    
 
 
 
[编辑]abu406的公告
[编辑]文章分类
札记
存档
2010年11月(1)
2010年07月(1)
2010年04月(2)
2009年11月(1)
2009年07月(2)
2009年06月(1)
2009年05月(7)
2009年04月(1)
2009年01月(4)
公告:
2011年4月微软MVP申请开始啦!有兴趣的抓紧时间哦![意见反馈][官方博客]   c#时间格式化字符串详解 收藏
有时候我们要对时间进行转换,达到不同的显示效果
 默认格式为:2005-6-6 14:33:34
 如果要换成成200506,06-2005,2005-6-6或更多的该怎么办呢
 我们要用到:DateTime.ToString的方法(String, IFormatProvider)
 
 using System;
 using System.Globalization;
 String format="D";
 DateTime date=DataTime,Now;
 Response.Write(date.ToString(format, DateTimeFormatInfo.InvariantInfo));
 结果输出
 Thursday, June 16, 2005
 
 参数format格式详细用法
 格式字符 关联属性/说明
 d ShortDatePattern -----08/30/2006
 D LongDatePattern -----Wednesday, 30 August 2006
 f 完整日期和时间(长日期和短时间) -----Wednesday, 30 August 2006 23:21
 F FullDateTimePattern(长日期和长时间) -----Wednesday, 30 August 2006 23:22:02
 g 常规(短日期和短时间) -----08/30/2006 23:22
 G 常规(短日期和长时间) -----08/30/2006 23:23:11
 m、M MonthDayPattern
 r、R RFC1123Pattern
 s 使用当地时间的 SortableDateTimePattern(基于 ISO 8601)
 t ShortTimePattern ------23:24
 T LongTimePattern -------23:24:30
 u UniversalSortableDateTimePattern 用于显示通用时间的格式 -------2006-08-30 23:25:10Z
 U 使用通用时间的完整日期和时间(长日期和长时间) -----Wednesday, 30 August 2006 15:25:37
 y、Y YearMonthPattern
 
 下表列出了可被合并以构造自定义模式的模式。这些模式是区分大小写的;例如,识别“MM”,但不识别“mm”。如果自定义模式包含空白字符或用单引号括起来的字符,则输出字符串页也将包含这些字符。未定义为格式模式的一部分或未定义为格式字符的字符按其原义复制。
 
 格式模式 说明
 d 月中的某一天。一位数的日期没有前导零。
 dd 月中的某一天。一位数的日期有一个前导零。
 ddd 周中某天的缩写名称,在 AbbreviatedDayNames 中定义。
 dddd 周中某天的完整名称,在 DayNames 中定义。
 M 月份数字。一位数的月份没有前导零。
 MM 月份数字。一位数的月份有一个前导零。
 MMM 月份的缩写名称,在 AbbreviatedMonthNames 中定义。
 MMMM 月份的完整名称,在 MonthNames 中定义。
 y 不包含纪元的年份。如果不包含纪元的年份小于 10,则显示不具有前导零的年份。
 yy 不包含纪元的年份。如果不包含纪元的年份小于 10,则显示具有前导零的年份。
 yyyy 包括纪元的四位数的年份。
 gg 时期或纪元。如果要设置格式的日期不具有关联的时期或纪元字符串,则忽略该模式。
 h 12 小时制的小时。一位数的小时数没有前导零。
 hh 12 小时制的小时。一位数的小时数有前导零。
 H 24 小时制的小时。一位数的小时数没有前导零。
 HH 24 小时制的小时。一位数的小时数有前导零。
 m 分钟。一位数的分钟数没有前导零。
 mm 分钟。一位数的分钟数有一个前导零。
 s 秒。一位数的秒数没有前导零。
 ss 秒。一位数的秒数有一个前导零。
 f 秒的小数精度为一位。其余数字被截断。
 ff 秒的小数精度为两位。其余数字被截断。
 fff 秒的小数精度为三位。其余数字被截断。
 ffff 秒的小数精度为四位。其余数字被截断。
 fffff 秒的小数精度为五位。其余数字被截断。
 ffffff 秒的小数精度为六位。其余数字被截断。
 fffffff 秒的小数精度为七位。其余数字被截断。
 t 在 AMDesignator 或 PMDesignator 中定义的 AM/PM 指示项的第一个字符(如果存在)。
 tt 在 AMDesignator 或 PMDesignator 中定义的 AM/PM 指示项(如果存在)。
 z 时区偏移量(“+”或“-”后面仅跟小时)。一位数的小时数没有前导零。例如,太平洋标准时间是“-8”。
 zz 时区偏移量(“+”或“-”后面仅跟小时)。一位数的小时数有前导零。例如,太平洋标准时间是“-08”。
 zzz 完整时区偏移量(“+”或“-”后面跟有小时和分钟)。一位数的小时数和分钟数有前导零。例如,太平洋标准时间是“-08:00”。
 : 在 TimeSeparator 中定义的默认时间分隔符。
 / 在 DateSeparator 中定义的默认日期分隔符。
 % c 其中 c 是格式模式(如果单独使用)。如果格式模式与原义字符或其他格式模式合并,则可以省略“%”字符。
 \ c 其中 c 是任意字符。照原义显示字符。若要显示反斜杠字符,请使用“\\”。
 
 只有上面第二个表中列出的格式模式才能用于创建自定义模式;在第一个表中列出的标准格式字符不能用于创建自定义模式。自定义模式的长度至少为两个字符;例如,
 
 DateTime.ToString( "d") 返回 DateTime 值;“d”是标准短日期模式。
 DateTime.ToString( "%d") 返回月中的某天;“%d”是自定义模式。
 DateTime.ToString( "d ") 返回后面跟有一个空白字符的月中的某天;“d”是自定义模式。
 
 比较方便的是,上面的参数可以随意组合,并且不会出错,多试试,肯定会找到你要的时间格式
 如要得到2005年06月 这样格式的时间
 可以这样写:
 date.ToString("yyyy年MM月", DateTimeFormatInfo.InvariantInfo)
 如此类推
date.ToString("yyyy/MM/dd HH:mm:ss", DateTimeFormatInfo.InvariantInfo)
-----------------------------------------------------------------------------------------------------
//今天
DateTime.Now.Date.ToShortDateString();
//昨天,就是今天的日期减一
DateTime.Now.AddDays(-1).ToShortDateString();
//明天,同理,加一
DateTime.Now.AddDays(1).ToShortDateString();
//本周(要知道本周的第一天就得先知道今天是星期几,从而得知本周的第一天就是几天前的那一天,要注意的是这里的每一周是从周日始至周六止
DateTime.Now.AddDays(Convert.ToDouble((0 - Convert.ToInt16(DateTime.Now.DayOfWeek)))).ToShortDateString();
DateTime.Now.AddDays(Convert.ToDouble((6 - Convert.ToInt16(DateTime.Now.DayOfWeek)))).ToShortDateString();
//如果你还不明白,再看一下中文显示星期几的方法就应该懂了
//由于DayOfWeek返回的是数字的星期几,我们要把它转换成汉字方便我们阅读,有些人可能会用switch来一个一个地对照,其实不用那么麻烦的              
string[] Day = new string[] { "星期日", "星期一", "星期二", "星期三", "星期四", "星期五", "星期六" };
Day[Convert.ToInt16(DateTime.Now.DayOfWeek)];
//上周,同理,一个周是7天,上周就是本周再减去7天,下周也是一样
DateTime.Now.AddDays(Convert.ToDouble((0 - Convert.ToInt16(DateTime.Now.DayOfWeek))) - 7).ToShortDateString();
DateTime.Now.AddDays(Convert.ToDouble((6 - Convert.ToInt16(DateTime.Now.DayOfWeek))) - 7).ToShortDateString();
//下周
DateTime.Now.AddDays(Convert.ToDouble((0 - Convert.ToInt16(DateTime.Now.DayOfWeek))) + 7).ToShortDateString();
DateTime.Now.AddDays(Convert.ToDouble((6 - Convert.ToInt16(DateTime.Now.DayOfWeek))) + 7).ToShortDateString();
//本月,很多人都会说本月的第一天嘛肯定是1号,最后一天就是下个月一号再减一天。当然这是对的
//一般的写法
DateTime.Now.Year.ToString() + DateTime.Now.Month.ToString() + "1"; //第一天
DateTime.Parse(DateTime.Now.Year.ToString() + DateTime.Now.Month.ToString() + "1").AddMonths(1).AddDays(-1).ToShortDateString();//最后一天
//巧用C#里ToString的字符格式化更简便
DateTime.Now.ToString("yyyy-MM-01");
DateTime.Parse(DateTime.Now.ToString("yyyy-MM-01")).AddMonths(1).AddDays(-1).ToShortDateString();
//上个月,减去一个月份
DateTime.Parse(DateTime.Now.ToString("yyyy-MM-01")).AddMonths(-1).ToShortDateString();
DateTime.Parse(DateTime.Now.ToString("yyyy-MM-01")).AddDays(-1).ToShortDateString();
//下个月,加去一个月份
DateTime.Parse(DateTime.Now.ToString("yyyy-MM-01")).AddMonths(1).ToShortDateString();
DateTime.Parse(DateTime.Now.ToString("yyyy-MM-01")).AddMonths(2).AddDays(-1).ToShortDateString();
//7天后
DateTime.Now.Date.ToShortDateString();
DateTime.Now.AddDays(7).ToShortDateString();
//7天前
DateTime.Now.AddDays(-7).ToShortDateString();
DateTime.Now.Date.ToShortDateString();
//本年度,用ToString的字符格式化我们也很容易地算出本年度的第一天和最后一天
DateTime.Parse(DateTime.Now.ToString("yyyy-01-01")).ToShortDateString();
DateTime.Parse(DateTime.Now.ToString("yyyy-01-01")).AddYears(1).AddDays(-1).ToShortDateString();
//上年度,不用再解释了吧
DateTime.Parse(DateTime.Now.ToString("yyyy-01-01")).AddYears(-1).ToShortDateString();
DateTime.Parse(DateTime.Now.ToString("yyyy-01-01")).AddDays(-1).ToShortDateString();
//下年度
DateTime.Parse(DateTime.Now.ToString("yyyy-01-01")).AddYears(1).ToShortDateString();
DateTime.Parse(DateTime.Now.ToString("yyyy-01-01")).AddYears(2).AddDays(-1).ToShortDateString();
//本季度,很多人都会觉得这里难点,需要写个长长的过程来判断。其实不用的,我们都知道一年四个季度,一个季度三个月
//首先我们先把日期推到本季度第一个月,然后这个月的第一天就是本季度的第一天了
DateTime.Now.AddMonths(0 - ((DateTime.Now.Month - 1) % 3)).ToString("yyyy-MM-01");
//同理,本季度的最后一天就是下季度的第一天减一
DateTime.Parse(DateTime.Now.AddMonths(3 - ((DateTime.Now.Month - 1) % 3)).ToString("yyyy-MM-01")).AddDays(-1).ToShortDateString();
//下季度,相信你们都知道了。。。。收工
DateTime.Now.AddMonths(3 - ((DateTime.Now.Month - 1) % 3)).ToString("yyyy-MM-01");
DateTime.Parse(DateTime.Now.AddMonths(6 - ((DateTime.Now.Month - 1) % 3)).ToString("yyyy-MM-01")).AddDays(-1).ToShortDateString();
//上季度
DateTime.Now.AddMonths(-3 - ((DateTime.Now.Month - 1) % 3)).ToString("yyyy-MM-01");
DateTime.Parse(DateTime.Now.AddMonths(0 - ((DateTime.Now.Month - 1) % 3)).ToString("yyyy-MM-01")).AddDays(-1).ToShortDateString();
发表于 @ 2009年05月03日 10:49:00 | 评论( 0 ) | 编辑| 举报| 收藏
旧一篇:取datatable某行某列值 | 新一篇: 随机字符串 public static string GetRandomString(int n)
查看最新精华文章 请访问博客首页相关文章
ToString 参数使用.关于C#中的DateTime类型的细节问题ToString()参数C#DataTime格式转换c#时间格式化字符串详解C#常用日期格式处理转换C#日期格式化C#时间格式化字符串详解发表评论表 情:          评论内容: 用 户 名:登录 注册 匿名评论 匿名用户验 证 码:  重新获得验证码
  热门招聘职位【Zynga Beijing】热招各类游戏人才,与我们共建属于你的虚拟帝国【开心网】高薪诚聘各类技术人才千万美元风投网站高薪诚聘PHP工程师【EF 全球研发中心】赴美工作机会 诚招IT精英【鸿联九五】高薪诚聘手机游戏服务器程序 期待热爱游戏的你加盟【MediaV】技术类职位热招,欢迎应届毕业生【北京天健科技】诚聘.net架构师,高级软件开发工程师(.net , Powerbuilder)【叠拓】北欧领先IT服务公司诚聘英才 北京+成都+杭州【瀚信科技】诚聘 WINDOWS C++ WINDOWS C#中高级开发工程师【酷我音乐盒】高薪诚聘 激情爱好工作融为一体【达内集团】高薪诚聘JAVA讲师.嵌入式讲师.3G讲师.技术总监.分公司总经理【天际网】急聘Java应用架构师、高级Java工程师、网页设计师【Zynga Beijing】热招各类游戏人才,与我们共建属于你的虚拟帝国【开心网】高薪诚聘各类技术人才千万美元风投网站高薪诚聘PHP工程师【EF 全球研发中心】赴美工作机会 诚招IT精英【鸿联九五】高薪诚聘手机游戏服务器程序 期待热爱游戏的你加盟【MediaV】技术类职位热招,欢迎应届毕业生【北京天健科技】诚聘.net架构师,高级软件开发工程师(.net , Powerbuilder)【叠拓】北欧领先IT服务公司诚聘英才 北京+成都+杭州【瀚信科技】诚聘 WINDOWS C++ WINDOWS C#中高级开发工程师【酷我音乐盒】高薪诚聘 激情爱好工作融为一体【达内集团】高薪诚聘JAVA讲师.嵌入式讲师.3G讲师.技术总监.分公司总经理【天际网】急聘Java应用架构师、高级Java工程师、网页设计师 公司简介|招贤纳士|广告服务|银行汇款账号|联系方式|版权声明|法律顾问|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
江苏乐知网络技术有限公司 提供商务支持
 Email:webmaster@csdn.net
Copyright © 1999-2010, CSDN.NET, All Rights Reserved
  企业3.0的两秒优势杭州C2C网站诚寻CTO共同创业

本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/abu406/archive/2009/05/03/4144797.aspx

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多