VB时间戳转换为系统日期

天北小白 2013-12-30 03:02:52
dateLong = 1331078400000
Dim dt As DateTime = DateTime.FromFileTime(dateLong)
Dim dt2 As DateTime = DateTime.FromFileTimeUtc(dateLong)
这两个方法转换的日期都不对,有那个方法能实现正确的转换啊
...全文
463 4 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
lele_nancy 2014-01-07
  • 打赏
  • 举报
回复

Public class UnixTime

  Public ReadOnly UnixEpoch As DateTime= new DateTime(1970, 1, 1, 0, 0, 0, DateTimeKind.Utc)

  Public Function ToUnixTime(ByVal dateTime As DateTime) As Long

    dateTime = dateTime.ToUniversalTime()

    Return CLng(dateTime.Subtract(UnixEpoch).TotalSeconds)

  End Function

  Public Function FromUnixTime(ByVal unixTime As Long) As DateTime

    Return UnixEpoch.AddSeconds(unixTime)

  End Function
End Class
Dim dt as DataTime = UnixTime.FromUnixTime(iStrTime)


lele_nancy 2014-01-07
  • 打赏
  • 举报
回复
new DateTime(1970, 1, 1, 0, 0, 0, DateTimeKind.Utc) 在小时的地方要加上当前所在的时区,国内应该是8 new DateTime(1970, 1, 1, 8, 0, 0, DateTimeKind.Utc)
wind_cloud2011 2014-01-01
  • 打赏
  • 举报
回复
你提供 的dateLong = 1331078400000就是返回 1601年
 Dim dt As DateTime = DateTime.FromFileTime(dateLong)
        Dim d As String = DateTime.FromFileTime(dateLong).ToString("yyyy-MM-dd HH:mm:ss")
Long型一般是表示为 Windows 文件时间的当前 DateTime 对象的值,它表示自协调通用时间 (UTC) 公元 (C.E.) 1601 年 1 月 1 日午夜 12:00 以来已经过的时间的以 100 毫微秒为间隔的间隔数。Windows 使用文件时间记录应用程序创建、访问或写入文件的时间。用Date.FromFileTime(long)方法。还有一个 FromFileTimeUtc(long)方法,是将当前文件时间转换为同时的UTC(协调通用时间) Dim l As Long = 128208176211955002 Dim dt As DateTime = DateTime.FromFileTime( 128208176211955002 ) Dim dt2 As DateTime = DateTime.FromFileTimeUtc( 128208176211955002 ) Debug.WriteLine(dt.ToString) Debug.WriteLine(dt2.ToString) 执行结果: 2007 / 04 / 12 11 : 13 : 41 2007 / 04 / 12 2 : 13 : 41
feiyun0112 2013-12-30
  • 打赏
  • 举报
回复
1331078400000哪来的


*****************************************************************************
签名档: http://feiyun0112.cnblogs.com/

16,721

社区成员

发帖
与我相关
我的任务
社区描述
VB技术相关讨论,主要为经典vb,即VB6.0
社区管理员
  • VB.NET
  • 水哥阿乐
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧