VB.NET中的日期时间转换
| 分类: .NET |
1.字符型和日期型之间的转换
日期型转换为字符型是最简单的,可以直接转换。
http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gifDebug.WriteLine(
http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gifDebug.WriteLine(
http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gifDebug.WriteLine(
http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gifDebug.WriteLine(
http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gifDebug.WriteLine(
http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gifDebug.WriteLine(
http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gifDebug.WriteLine(
http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gifDebug.WriteLine(
http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gifDebug.WriteLine(
http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gifDebug.WriteLine(
http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gifDebug.WriteLine(
http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif
http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif结果如下:
http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gifdt.ToLongDateString
http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gifdt.ToLongTimeString
http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gifdt.ToShortDateString
http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gifdt.ToShortTimeString
http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif dt.ToFileTime
http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif dt.ToFileTimeUtc
http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif dt.ToLocalTime
http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif dt.ToOADate
http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif dt.ToUniversalTime
http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif dt.ToString
http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif dt.ToString(yyyy/MM/dd
http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif
用dt.ToString("yyyy/MM/dd
hh:mm:ss:fff")是最方便的,可以转换为任意一种想要的字符串。
其中的毫秒部分最大有7位,【fff】表示只取前三位,【fffffff】表示取全部7位。
上面的例子执行结果发现了一个奇怪的问题,执行结果中【dt.ToString = 2007/04/16
15:10:21】,
而【dt.ToString(yyyy/MM/dd hh:mm:ss:fff) = 2007/04/16
03:10:21:714】,两者的小时部分相差了12,
网上好多帖子都说是因为计时开始时间的问题,我觉得肯定是转换时候的问题,不然为什么【ToString()】是正确的,
估计应该是时间表示的问题,试着把【ToString("yyyy/MM/dd
HH:mm:ss:fff"))】中的【hh】改成大写的【HH】,执行OK。
http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif dt.ToString(yyyy
特别值得注意的是月【MM】和分【mm】,如果两者写错了很难发现。
http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif 月
http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif 日
http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif 时
http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif 分
http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif 秒
http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif 毫秒
http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif Debug.WriteLine(
http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif Debug.WriteLine("dt.ToString(yyyy/MM/dd
http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif Debug.WriteLine("dt.ToString(yyyy/MM/dd
http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif Debug.WriteLine("dt.ToString(YYYY/MM/DD
http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif Debug.WriteLine("dt.ToString(yyyy/mm/dd
http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif
http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif 结果如下:
http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif dt.ToString(yyyy/MM/dd
http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif dt.ToString(yyyy/MM/dd
http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif dt.ToString(yyyy/MM/dd
http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif dt.ToString(YYYY/MM/DD
http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif dt.ToString(yyyy/mm/dd
也可以用Format(Date,Format)进行转换
http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif Debug.WriteLine(
http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif
http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif 结果如下:
http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif 2007/04/16
其他的日期型转换为字符型都可以先转换为Date型或者DateTime型,然后再通过ToString转换为字符型。
字符型转换为日期型最直接的方法就是解析日期字符串,取得年,月,日,时,分,秒,组织成日期形式【yyyy/MM/dd】或者【yyyy/MM/dd
hh:mm:ss】,然后用CDate转换为日期型
http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif Dim
http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif Dim
http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif Dim
http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif Dim
http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif Dim
http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif Dim
http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif Debug.WriteLine("dt.ToString
http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif Debug.WriteLine(
http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif
http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif 结果如下:
http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif dt.ToString
http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif dt2.ToString
|
名称 |
说明 |
|---|---|
|
将 DateTime 结构的新实例初始化为指定的刻度数。 |
|
|
将 DateTime 结构的新实例初始化为指定的刻度数以及协调通用时间
(UTC) 或本地时间。 |
|
|
将 DateTime 结构的新实例初始化为指定的年、月和日。 |
|
|
将 DateTime 结构的新实例初始化为指定日历的指定年、月和日。 |
|
|
将 DateTime 结构的新实例初始化为指定的年、月、日、小时、分钟和秒。 |
|
|
DateTime (Int32, Int32, Int32, Int32, Int32, Int32, Calendar) |
将 DateTime 结构的新实例初始化为指定日历的指定年、月、日、小时、分钟和秒。 |
|
DateTime (Int32, Int32, Int32, Int32, Int32, Int32, DateTimeKind) |
将 DateTime 结构的新实例初始化为指定年、月、日、小时、分钟、秒和协调通用时间 (UTC) 或本地时间。 |
|
将 DateTime 结构的新实例初始化为指定的年、月、日、小时、分钟、秒和毫秒。 |
|
|
DateTime (Int32, Int32, Int32, Int32, Int32, Int32, Int32, Calendar) |
将 DateTime 结构的新实例初始化为指定日历的指定年、月、日、小时、分钟、秒和毫秒。 |
|
DateTime (Int32, Int32, Int32, Int32, Int32, Int32, Int32, DateTimeKind) |
将 DateTime 结构的新实例初始化为指定年、月、日、小时、分钟、秒、毫秒和协调通用时间 (UTC) 或本地时间。 |
|
DateTime (Int32, Int32, Int32, Int32, Int32, Int32, Int32, Calendar, DateTimeKind) |
将 DateTime 结构的新实例初始化为指定日历的指定年、月、日、小时、分钟、秒、毫秒和协调通用时间 (UTC) 或本地时间。 |
http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif Debug.WriteLine(d.ToString("yyyy/MM/dd
http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif
http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif 执行结果:
http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif 2007/04/13
2.Double型和日期型之间的转换
在一些数据库中保存日期的时候不是用日期型而是把日期转换成double型之后放入数据库,这样的情况下
就需要将Double转化为日期型。
http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif Dim
http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif Debug.WriteLine("dtime.ToString(yyyy/MM/dd
http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif
http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif 执行结果:
http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif dtime.ToString(yyyy/MM/dd
执行结果年日不正确,大概少了1900年,可能是因为从1899年12月30日开始计算的,要把计时开始的时间加上
1899年 12 月 30 日午夜 12:00:00开始的毫微秒数 = 599264352000000000
http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif Debug.WriteLine(dt.Ticks.ToString)
http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif
http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif 执行结果:
http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif 599264352000000000
将上面的例子改写为下面的样子,结果就正确了
http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif Dim
http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif Debug.WriteLine("dtime.ToString(yyyy/MM/dd
http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif
http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif 执行结果:
http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif dtime.ToString(yyyy/MM/dd
这样的方法用起来肯定很麻烦,DateTime还有另外一个从Double转换为Date型的方法,FromOADate(double),这样子就方便多了。当然,从日期型转换为Double型的话也很方便了,用Date.ToOaDate()就可以了.
http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif Debug.WriteLine(Format(dt,
http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif Debug.WriteLine("dt.ToOADate.ToString
http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif
http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif 执行结果:
http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif
http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif dt.ToOADate.ToString
3.Long型和日期型之间的转换
Long型一般是表示为 Windows 文件时间的当前 DateTime 对象的值,它表示自协调通用时间 (UTC) 公元 (C.E.) 1601 年 1 月 1 日午夜 12:00 以来已经过的时间的以 100 毫微秒为间隔的间隔数。Windows 使用文件时间记录应用程序创建、访问或写入文件的时间。用Date.FromFileTime(long)方法。还有一个FromFileTimeUtc(long)方法,是将当前文件时间转换为同时的UTC(协调通用时间)
http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif Dim
http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif Dim
http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif Debug.WriteLine(dt.ToString)
http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif Debug.WriteLine(dt2.ToString)
http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif
http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif 执行结果:
http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif 2007/04/12
http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif 2007/04/12
http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif 现在这里是东9区,刚好时间上差了9小时
同样,日期型转换为Long型用Date.ToFileTime()方法。另外还有一个ToFileTimeUtc()方法,两者在指定Kind的情况下是相同的,在没有指定Kind的情况下内容是不同的。
如下例中,DateTimeKind指定DateTime对象是表示本地时间、协调通用时间 (UTC),还是既不指定为本地时间,也不指定为
UTC。Local 表示的时间为本地时间。
http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif Debug.WriteLine("DateTimeKind
http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif Debug.WriteLine(dt.ToFileTime.ToString)
http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif Debug.WriteLine(dt.ToFileTimeUtc().ToString)
http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif dt
http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif Debug.WriteLine(
http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif Debug.WriteLine(dt.ToFileTime.ToString)
http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif Debug.WriteLine(dt.ToFileTimeUtc().ToString)
http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif dt
http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif Debug.WriteLine(
http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif Debug.WriteLine(dt.ToFileTime.ToString)
http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif Debug.WriteLine(dt.ToFileTimeUtc().ToString)
http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif dt
http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif Debug.WriteLine(
http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif Debug.WriteLine(dt.ToFileTime.ToString)
http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif Debug.WriteLine(dt.ToFileTimeUtc().ToString)
http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif
http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif 执行结果:
http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif DateTimeKind
http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif
http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif 128208176211955002
http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif DateTimeKind
http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif
http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif 128208500211955002
http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif DateTimeKind
http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif
http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif 128208176211955002
http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif DateTimeKind
http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif
http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif 128208500211955002

加载中…