* datetime.now.tostring()方法默认的你是无法得到全部的时间的格式的,只能得到日期,得不到具体时间,如果要具体时间,就应该使用 datetime的tostring()重载,datetime.now.tostring("F")这样就能拿到完整的时间格式了.
参数format格式详细用法
 格式字符 关联属性/说明
 d ShortDatePattern
 D LongDatePattern
 f 完整日期和时间(长日期和短时间)
 F FullDateTimePattern(长日期和长时间)
 g 常规(短日期和短时间)
 G 常规(短日期和长时间)
 m、M MonthDayPattern
 r、R RFC1123Pattern
 s 使用当地时间的 SortableDateTimePattern(基于 ISO 8601)
 t ShortTimePattern
 T LongTimePattern
 u UniversalSortableDateTimePattern 用于显示通用时间的格式
 U 使用通用时间的完整日期和时间(长日期和长时间)
 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)

//今天
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();
------------------------------------------
 
System.Globalization.DateTimeFormatInfo dti = new
System.Globalization.DateTimeFormatInfo();
dti.ShortDatePattern = "yyyyMMddHHmmss";
string strToDecode = "20090112123030";
DateTime dt = DateTime.ParseExact(strToDecode, "d", dti);
 
------------  TimeSpan 
------------------
 
程序代码: 
label1.Text = "2004-1-1
15:36:05";
label2.Text = "2004-3-1
20:16:35";
   
   DateTime d1 =new
DateTime(2004,1,1,15,36,05);
   DateTime d2 =new
DateTime(2004,3,1,20,16,35);
   
   TimeSpan d3 =
d2.Subtract(d1);
   label3.Text =
"相差:"
   
+d3.Days.ToString()+"天"
   
+d3.Hours.ToString()+"小时"
   
+d3.Minutes.ToString()+"分钟"
   
+d3.Seconds.ToString()+"秒";
程序代码: 
c#的时间段TimeSpan对象的最大间隔单位为天
简单的实现如下:
System.DateTime date1 = new System.DateTime(1996, 6, 3, 22,
15, 0);
System.DateTime date2 = new System.DateTime(1996, 12, 6, 13, 2,
0);
System.DateTime date3 = new System.DateTime(1996, 10, 12, 8, 42,
0);
// diff1 gets 185 days, 14 hours, and 47 minutes.
System.TimeSpan diff1 = date2.Subtract(date1);
// date4 gets 4/9/1996 5:55:00
PM.
System.DateTime date4 = date3.Subtract(diff1);
// diff2 gets 55 days 4 hours and 20 minutes.
System.TimeSpan diff2 = date2 - date3;
// date5 gets 4/9/1996 5:55:00
PM.
System.DateTime date5 = date1 - diff2;
private string DateDiff(DateTime DateTime1, DateTime
DateTime2)
{  string dateDiff = null;
   TimeSpan ts1 = new
TimeSpan(DateTime1.Ticks);
   TimeSpan ts2 = new
TimeSpan(DateTime2.Ticks);
   TimeSpan ts =
ts1.Subtract(ts2).Duration();
   dateDiff =
ts.Days.ToString()+"天"+ ts.Hours.ToString()+"小时"+
ts.Minutes.ToString()+"分钟"+ ts.Seconds.ToString()+"秒";
   return dateDiff;
}

说明:
1.DateTime值类型代表了一个从公元0001年1月1日0点0分0秒到公元9999年12月31日23点59分59秒之间的具体日期时刻。因此,你可以用DateTime值类型来描述任何在想象范围之内的时间。一个DateTime值代表了一个具体的时刻

2.TimeSpan值包含了许多属性与方法,用于访问或处理一个TimeSpan值
下面的列表涵盖了其中的一部分:
Add:与另一个TimeSpan值相加。
Days:返回用天数计算的TimeSpan值。
Duration:获取TimeSpan的绝对值。
Hours:返回用小时计算的TimeSpan值
Milliseconds:返回用毫秒计算的TimeSpan值。
Minutes:返回用分钟计算的TimeSpan值。
Negate:返回当前实例的相反数。
Seconds:返回用秒计算的TimeSpan值。
Subtract:从中减去另一个TimeSpan值。
Ticks:返回TimeSpan值的tick数。
TotalDays:返回TimeSpan值表示的天数。
TotalHours:返回TimeSpan值表示的小时数。
TotalMilliseconds:返回TimeSpan值表示的毫秒数。
TotalMinutes:返回TimeSpan值表示的分钟数。
TotalSeconds:返回TimeSpan值表示的秒数。

关于C#中的DateTime类型的技巧的更多相关文章

  1. SQL server数据库中的DateTime类型出现的问题

    我们知道这个SQL server数据库中的DateTime类型是数据库应用开发中经经常使用到的一种数据类型.而C#语言中也有DateTime类型,尽管二者都是用来描写叙述时间的,可是它们的默认值是不同 ...

  2. Sql中的datetime类型的空值和c#中的DateTime的空值的转换方法

    [一篮饭特稀原创,转载请注明出自http://www.cnblogs.com/wanghafan/p/3412796.html] 在NET 2.0以上版本提供了一种新的方法 就是加问号,DateTim ...

  3. gorm中数据库datetime类型的映射和time.Time的格式化

    如果在结构体中设置time变量的类型是time.Time,那么gorm取出来的时间格式将会是”2006-01-02 15:04:05.999999999 -0700 MST“东八区时间,在time.T ...

  4. 从数据库中取 datetime类型,界面展示 yyyy-MM-dd

    //处理提问时间,去掉时分秒 if(array!=null && array.size()>0){ for(int i=0;i<array.size();i++){ JSO ...

  5. 解决Entity Framework中DateTime类型字段异常

    从 datetime2 数据类型到 datetime 数据类型的转换产生一个超出范围的值 具体的错误原因是:C#中的DateTime类型比SqlServer中的datetime范围大.SqlServe ...

  6. [SQL]躺着也中枪的datetime类型

    写在前面 本来这个东西,我是不想在这里总结的,今天有初学者的朋友问我了,那就不得不说说了,你肯定也踩过这样的坑,没遇到,说明你运气好,编码习惯好.那还是言归正传吧.避免你中枪,还是扫一眼这篇文章吧. ...

  7. oracle数据库date类型和mysql数据库datetime类型匹配

    oracle数据库有date类型,但是没有datetime类型 mysql数据库既有date类型也有datetime类型. Oracle数据库的date类型和mysql的date类型是不一样的,Ora ...

  8. 【AspNetCore】【WebApi】扩展Webapi中的RouteConstraint中,让DateTime类型,支持时间格式化(DateTimeFormat)

    扩展Webapi中的RouteConstraint中,让DateTime类型,支持时间格式化(DateTimeFormat) 一.背景 大家在使用WebApi时,会用到DateTime为参数,类似于这 ...

  9. 向数据库中插入一个DateTime类型的数据到一个Date类型的字段中,需要转换类型。TO_DATE('{0}','YYYY-MM-DD'))

    需要指出的是,C#中有datetime类型,但是这个类型是包括小时,分钟,秒的.这个格式与数据库中的Date类型不符,如果将now设为datetime类型插入数据会失败. 需要通过TO_DATE('字 ...

随机推荐

  1. 保留你的dSYM文件

    大家编译iPhone程序的时候,都会发现二进制文件的旁边生成了一个.dSYM文件.以前一直不知道这个文件是用来干嘛的,今天才知道这个是symbol file,用来debug用的. 大家可以读读这篇文档 ...

  2. Maven学习(3) - Maven和Eclipse集成和构建多模块Maven项目

    最近在工作中越来越经常的用到了Maven作为项目管理和Jar包管理和构建的工具,感觉Maven的确是很好用的.而且要将Maven的功能最大发挥出来,多模块是一个很好的集成例子. 一个Maven项目包括 ...

  3. mkimage使用详解

    uboot源代码的tools/目录下有mkimage工具,这个工具可以用来制作不压缩或者压缩的多种可启动映象文件. mkimage在制作映象文件的时候,是在原来的可执行映象文件的前面加上一个0x40字 ...

  4. UVA 11178 Morley's Theorem(旋转+直线交点)

    题目链接:http://acm.hust.edu.cn/vjudge/problem/viewProblem.action?id=18543 [思路] 旋转+直线交点 第一个计算几何题,照着书上代码打 ...

  5. [转+整理]LINUX学习笔记(1):磁盘结构及分区

    整理自: http://vbird.dic.ksu.edu.tw/linux_basic/0130designlinux_2.php http://lengjianxxxx.blog.163.com/ ...

  6. Drawing Lines - SGU 135(简单递推)

    求N条直线最多能把一个平面分成几部分. 代码如下: ========================================================================== ...

  7. winfrom 截屏、抓屏 分类: WinForm 2014-08-01 13:02 198人阅读 评论(0) 收藏

    截取全屏代码: try { this.Hide(); Rectangle bounds = Screen.GetBounds(Screen.GetBounds(Point.Empty)); Bitma ...

  8. Winform Windows Media Player 简易播放器 分类: WinForm 2014-07-31 20:12 589人阅读 评论(0) 收藏

    新手上路,高手勿进! 窗体设计: 实现效果: 实现代码: using System; using System.Collections.Generic; using System.ComponentM ...

  9. iOS 8 设置导航栏的背景颜色和背景图片

    假设是storyboard 直接embed一个导航栏.然后在新出现的导航栏 选属性 选一下颜色就能够了 代码实现背景颜色改动:self.navigationController.navigationB ...

  10. Delphi QQ表情的实现

    Delphi QQ表情的实现 QQ表情描述 蓝框 提示信息 鼠标在这个表情上面 这个表情才动 可以增加表情 表情打包 单击这个表情插入表情 关闭本窗体   主要使用Webbrowsr来实现的   -- ...