将UTC时间转换为当地时间

编程入门 行业动态 更新时间:2024-10-27 21:12:44
本文介绍了将UTC时间转换为当地时间的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧! 问题描述

我有一个用于两个不同时区的MS Access应用程序.区别是7个小时.我需要找到两个办公室都关闭的时间,这样我才能关闭它们的数据库,并进行压缩和修复以及备份它们.

I have an MS Access app which is used in two different time zones. The difference is 7 hours. I needed to find a time when the both of the offices are off so I can close their database and I can do compact and repair and do backup of them.

因此,我不需要创建两个单独的前端,我告诉关闭数据库一个在1000 PM,另一个在下午4点告诉我,我可以说可以说在世界标准时间上午0:30关闭数据库. 但是我不知道如何在本地转换相同的. 现在,我用于关闭数据库的代码如下:

So I will not need to create two separates front end and I tell close database one at 1000 PM and another in 4 AM I figure out I can say Close database at 00:30 AM UTC. But I do not know how to convert the same one in Local. Right now my code for closing the database looks like this:

Private Sub Form_Timer() Dim RunAtLocalTime As String RunAtLocalTime = Format(Now(), "HH:MM:SS") If RunAtLocalTime = ("00:00:00") Then DoCmd.Quit End If End Sub

我想做这样的事情:

Private Sub Form_Timer() Dim RunAtLocalTime As String Dim UTCTIME As '''RunAtLocalTime = Convert(UTCTIME) RunAtLocalTime = Format(Now(), "HH:MM:SS") If RunAtLocalTime = ("00:00:00") Then DoCmd.Quit End If End Sub

推荐答案

我发现了以下功能:

这将返回UTC时区偏移量:

This one returns the UTC timezone offset:

Option Compare Database Option Explicit Private Declare Function GetTimeZoneInformation Lib "kernel32" (lpTimeZoneInformation As TimeZoneInfo) As Long Private Type SystemTime intYear As Integer intMonth As Integer intwDayOfWeek As Integer intDay As Integer intHour As Integer intMinute As Integer intSecond As Integer intMilliseconds As Integer End Type Private Type TimeZoneInfo lngBias As Long intStandardName(32) As Integer intStandardDate As SystemTime intStandardBias As Long intDaylightName(32) As Integer intDaylightDate As SystemTime intDaylightBias As Long End Type Public Function GetUTCOffset() As Date Dim lngRet As Long Dim udtTZI As TimeZoneInfo lngRet = GetTimeZoneInformation(udtTZI) GetUTCOffset = udtTZI.lngBias / 60 / 24 End Function

来源:[此网站](编辑链接不再有效,已删除)

source: [this site] (edit link no longer valid, removed)

这将时间转换为格林尼治标准时间的时间:

And this one that converts a time to GMT:

Option Explicit Private Type SYSTEMTIME wYear As Integer wMonth As Integer wDayOfWeek As Integer wDay As Integer wHour As Integer wMinute As Integer wSecond As Integer wMilliseconds As Integer End Type Private Type TIME_ZONE_INFORMATION Bias As Long StandardName(31) As Integer StandardDate As SYSTEMTIME StandardBias As Long DaylightName(31) As Integer DaylightDate As SYSTEMTIME DaylightBias As Long End Type Private Declare Function GetTimeZoneInformation Lib "kernel32" (lpTimeZoneInformation As TIME_ZONE_INFORMATION) As Long 'Purpose : Converts local time to GMT. 'Inputs : dtLocalDate The local data time to return as GMT. 'Outputs : Returns the local time in GMT. 'Author : Andrew Baker 'Date : 13/11/2002 10:16 'Notes : 'Revisions : Public Function ConvertLocalToGMT(dtLocalDate As Date) As Date Dim lSecsDiff As Long 'Get the GMT time diff lSecsDiff = GetLocalToGMTDifference() 'Return the time in GMT ConvertLocalToGMT = DateAdd("s", -lSecsDiff, dtLocalDate) End Function 'Purpose : Converts GMT time to local time. 'Inputs : dtLocalDate The GMT data time to return as local time. 'Outputs : Returns GMT as local time. 'Author : Andrew Baker 'Date : 13/11/2002 10:16 'Notes : 'Revisions : Public Function ConvertGMTToLocal(gmtTime As Date) As Date Dim Differerence As Long Differerence = GetLocalToGMTDifference() ConvertGMTToLocal = DateAdd("s", Differerence, gmtTime) End Function 'Purpose : Returns the time lDiff between local and GMT (secs). 'Inputs : dtLocalDate The local data time to return as GMT. 'Outputs : Returns the local time in GMT. 'Author : Andrew Baker 'Date : 13/11/2002 10:16 'Notes : A positive number indicates your ahead of GMT. 'Revisions : Public Function GetLocalToGMTDifference() As Long Const TIME_ZONE_ID_INVALID& = &HFFFFFFFF Const TIME_ZONE_ID_STANDARD& = 1 Const TIME_ZONE_ID_UNKNOWN& = 0 Const TIME_ZONE_ID_DAYLIGHT& = 2 Dim tTimeZoneInf As TIME_ZONE_INFORMATION Dim lRet As Long Dim lDiff As Long 'Get time zone info lRet = GetTimeZoneInformation(tTimeZoneInf) 'Convert diff to secs lDiff = -tTimeZoneInf.Bias * 60 GetLocalToGMTDifference = lDiff 'Check if we are in daylight saving time. If lRet = TIME_ZONE_ID_DAYLIGHT& Then 'In daylight savings, apply the bias If tTimeZoneInf.DaylightDate.wMonth <> 0 Then 'if tTimeZoneInf.DaylightDate.wMonth = 0 then the daylight 'saving time change doesn't occur GetLocalToGMTDifference = lDiff - tTimeZoneInf.DaylightBias * 60 End If End If End Function

source:此网站

我相信第二个也使用第一个.

The second one I believe uses the first one as well.

任何一种都可以满足您的需求.

Either will suit your needs I believe.

更多推荐

将UTC时间转换为当地时间

本文发布于:2023-10-17 13:26:00,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1501057.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:转换为   当地时间   时间   UTC

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!