2,461
社区成员
发帖
与我相关
我的任务
分享
Option Explicit
'时间戳常量
Private Const TimeZone_China As Long = &H8 '中国(北京)时区[东八区],取系统时区的优雅办法我懒得查API了,有需要自己去搜吧
Private Const TimeStamp_Base As Date = #1/1/1970# '时间戳起始时间:1970年1月1日 0时0分0秒
Private Const TimeStamp_Max As Date = #1/19/2038 11:14:07 AM# '时间戳最大值(&H7FFFFFFF)
Private Const TimeStamp_Min As Date = #12/14/1901 4:45:52 AM# '时间戳最小值(&H80000000)
'日期格式转时间戳,默认加上东八区(北京时间)的时差
Public Function TimeStampFromDate(Optional TimeStamp As Date, Optional TimeZone As Long = TimeZone_China) As Long
Dim DateTimeStamp As Date
If TimeStamp > TimeStamp_Max Or TimeStamp < TimeStamp_Min Then TimeStamp = Now '这里要做错误处理
DateTimeStamp = DateAdd("h", -TimeZone, TimeStamp)
TimeStampFromDate = DateDiff("s", TimeStamp_Base, DateTimeStamp)
End Function
'时间戳转日期格式,默认转换为东八区(北京时间)
Public Function TimeStampToDate(TimeStamp As Long, Optional TimeZone As Long = TimeZone_China) As Date
Dim DateTimeStamp As Date
DateTimeStamp = DateAdd("s", TimeStamp, TimeStamp_Base)
TimeStampToDate = DateAdd("h", TimeZone, DateTimeStamp)
End Function
Private Sub Form_Load()
Debug.Print "TimeStampTest", TimeStampFromDate(Now), TimeStampToDate(TimeStampFromDate(Now))
End Sub
DateDiff("s", "1970/1/1", Now())