Finding out the current UTC / GMT time in Excel is possible with a little VBA magic. We’ve included a full working example.
Excel has two functions to give you the current date TODAY() or current date and time NOW() but it’s the local time as set on your computer.
Often the worksheet needs either the UTC / GMT time or the local time in another time zone. Microsoft has, for unknown reasons, always ignored requests for functions to give these details. Both UTC and the time zone offset (difference from UTC/GMT) are kept in Windows and other operating systems so, technically, it’s not big ask.
The need for the current UTC/GMT time and offset has become more important as Excel improves it’s external data connections and is used globally. Incoming data feeds can have date/time information for time zones other than the one on the local computer. The upcoming Stock Data feed is just one example of that.
Excel developers can’t assume that the worksheet will only be run in a fixed time zone which means some way of knowing a base time like UTC/GMT is important plus the current time zone offset.
Excel customers have to use some VBA to get the latest time and time zone offset information from Windows. There are many VBA code examples shared on the Internet, some more complicated than others. We went hunting for a (relatively) simple solution to show you.
Note: This only works in Office for Windows. Because calls to the Windows core system are necessary, the VBA won’t work on Office for Mac.
Technically UTC (Coordinated Universal Time) and GMT (Greenwich Mean Time) are different but, for most practical purposes they are the same. UTC/GMT does not change for daylight savings time. The two acronyms are used interchangeably.
UTC / GMT time
There are many ways to get the current UTC/GMT time from the Windows system. Search the web to find a bewildering range of suggestions. The one we like is short and simple.[cc lang=”vb” escaped=”true” width=”80%” theme=”blackboard”]
‘ Returns current date/time at UTC-GMT as an Excel serial date value
‘ Code from ‘GoGeek’ via https://stackoverflow.com/questions/1600875/how-to-get-the-current-datetime-in-utc-from-an-excel-vba-macro
Dim dt As Object
Set dt = CreateObject(“WbemScripting.SWbemDateTime”)
GimmeUTC = dt.GetVarDate(False)
Unlike other VBA suggestions, this one returns an Excel serial date ready to use in date/time calculations. The code is simple enough for even VBA novices to understand.
Put the function in a Module for the worksheet:
In the worksheet, the custom function will appear as you type a formula.
With the formula =GimmeUTC() you get Excel serial date/time value
Because it’s an Excel serial date value, comparing to another date/time is simple time subtraction.
See also Get Local time zone offset in Excel