Index: /trunk/include/iprt/mangling.h
===================================================================
--- /trunk/include/iprt/mangling.h	(revision 68112)
+++ /trunk/include/iprt/mangling.h	(revision 68113)
@@ -2251,4 +2251,5 @@
 # define RTTimeZoneGetInfoByWindowsName                 RT_MANGLER(RTTimeZoneGetInfoByWindowsName)
 # define RTTimeZoneGetInfoByWindowsIndex                RT_MANGLER(RTTimeZoneGetInfoByWindowsIndex)
+# define RTTimeZoneGetCurrent                           RT_MANGLER(RTTimeZoneGetCurrent)
 # define RTTlsAlloc                                     RT_MANGLER(RTTlsAlloc)
 # define RTTlsAllocEx                                   RT_MANGLER(RTTlsAllocEx)
Index: /trunk/include/iprt/time.h
===================================================================
--- /trunk/include/iprt/time.h	(revision 68112)
+++ /trunk/include/iprt/time.h	(revision 68113)
@@ -1094,4 +1094,13 @@
 RTDECL(PCRTTIMEZONEINFO) RTTimeZoneGetInfoByWindowsIndex(uint32_t idxZone);
 
+/**
+ * Get the current time zone (TZ).
+ *
+ * @returns IPRT status code.
+ * @param   pszName     Where to return the time zone name.
+ * @param   cbName      The size of the name buffer.
+ */
+RTDECL(int) RTTimeZoneGetCurrent(char *pszName, size_t cbName);
+
 /** @} */
 
Index: /trunk/src/VBox/Runtime/Makefile.kmk
===================================================================
--- /trunk/src/VBox/Runtime/Makefile.kmk	(revision 68112)
+++ /trunk/src/VBox/Runtime/Makefile.kmk	(revision 68113)
@@ -823,4 +823,5 @@
 	r3/win/RTSystemQueryDmiString-win.cpp \
 	r3/win/RTSystemQueryTotalRam-win.cpp \
+ 	r3/win/RTTimeZoneGetCurrent-win.cpp \
 	r3/win/alloc-win.cpp \
 	r3/win/allocex-win.cpp \
@@ -884,4 +885,5 @@
 	generic/utf16locale-generic.cpp \
 	generic/uuid-generic.cpp \
+ 	r3/generic/RTTimeZoneGetCurrent-generic.cpp \
 	r3/posix/allocex-r3-posix.cpp \
 	r3/linux/RTThreadGetNativeState-linux.cpp \
@@ -992,4 +994,5 @@
 	os2/RTErrConvertFromOS2.cpp \
 	r3/generic/allocex-r3-generic.cpp \
+ 	r3/generic/RTTimeZoneGetCurrent-generic.cpp \
 	r3/os2/filelock-os2.cpp \
 	r3/os2/mp-os2.cpp \
@@ -1071,4 +1074,5 @@
 	r3/darwin/RTPathUserDocuments-darwin.cpp \
 	r3/generic/allocex-r3-generic.cpp \
+ 	r3/generic/RTTimeZoneGetCurrent-generic.cpp \
 	r3/posix/RTFileQueryFsSizes-posix.cpp \
 	r3/posix/RTHandleGetStandard-posix.cpp \
@@ -1141,4 +1145,5 @@
 	r3/freebsd/rtProcInitExePath-freebsd.cpp \
 	r3/generic/allocex-r3-generic.cpp \
+ 	r3/generic/RTTimeZoneGetCurrent-generic.cpp \
 	r3/posix/RTFileQueryFsSizes-posix.cpp \
 	r3/posix/RTHandleGetStandard-posix.cpp \
@@ -1210,4 +1215,5 @@
 	r3/netbsd/rtProcInitExePath-netbsd.cpp \
 	r3/generic/allocex-r3-generic.cpp \
+ 	r3/generic/RTTimeZoneGetCurrent-generic.cpp \
 	r3/posix/RTFileQueryFsSizes-posix.cpp \
 	r3/posix/RTHandleGetStandard-posix.cpp \
@@ -1272,4 +1278,5 @@
 	generic/RTThreadGetNativeState-generic.cpp \
 	r3/generic/allocex-r3-generic.cpp \
+ 	r3/generic/RTTimeZoneGetCurrent-generic.cpp \
 	r3/posix/RTFileQueryFsSizes-posix.cpp \
 	r3/posix/RTFileSetAllocationSize-posix.cpp \
@@ -1359,4 +1366,5 @@
 	r3/haiku/time-haiku.cpp \
 	r3/generic/allocex-r3-generic.cpp \
+ 	r3/generic/RTTimeZoneGetCurrent-generic.cpp \
 	r3/posix/RTFileQueryFsSizes-posix.cpp \
 	r3/posix/RTHandleGetStandard-posix.cpp \
Index: /trunk/src/VBox/Runtime/r3/generic/RTTimeZoneGetCurrent-generic.cpp
===================================================================
--- /trunk/src/VBox/Runtime/r3/generic/RTTimeZoneGetCurrent-generic.cpp	(revision 68113)
+++ /trunk/src/VBox/Runtime/r3/generic/RTTimeZoneGetCurrent-generic.cpp	(revision 68113)
@@ -0,0 +1,41 @@
+/* $Id$ */
+/** @file
+ * IPRT - RTTimeZoneGetCurrent, generic.
+ */
+
+/*
+ * Copyright (C) 2017 Oracle Corporation
+ *
+ * This file is part of VirtualBox Open Source Edition (OSE), as
+ * available from http://www.virtualbox.org. This file is free software;
+ * you can redistribute it and/or modify it under the terms of the GNU
+ * General Public License (GPL) as published by the Free Software
+ * Foundation, in version 2 as it comes in the "COPYING" file of the
+ * VirtualBox OSE distribution. VirtualBox OSE is distributed in the
+ * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
+ *
+ * The contents of this file may alternatively be used under the terms
+ * of the Common Development and Distribution License Version 1.0
+ * (CDDL) only, as it comes in the "COPYING.CDDL" file of the
+ * VirtualBox OSE distribution, in which case the provisions of the
+ * CDDL are applicable instead of those of the GPL.
+ *
+ * You may elect to license modified versions of this file under the
+ * terms and conditions of either the GPL or the CDDL or both.
+ */
+
+
+/*********************************************************************************************************************************
+*   Header Files                                                                                                                 *
+*********************************************************************************************************************************/
+#include <iprt/time.h>
+#include "internal/iprt.h"
+
+#include <iprt/env.h>
+
+
+RTDECL(int) RTTimeZoneGetCurrent(char *pszName, size_t cbName)
+{
+    return RTEnvGetEx(RTENV_DEFAULT, "TZ", pszName, cbName, NULL);
+}
+
Index: /trunk/src/VBox/Runtime/r3/win/RTTimeZoneGetCurrent-win.cpp
===================================================================
--- /trunk/src/VBox/Runtime/r3/win/RTTimeZoneGetCurrent-win.cpp	(revision 68113)
+++ /trunk/src/VBox/Runtime/r3/win/RTTimeZoneGetCurrent-win.cpp	(revision 68113)
@@ -0,0 +1,106 @@
+/* $Id$ */
+/** @file
+ * IPRT - RTTimeZoneGetCurrent, generic.
+ */
+
+/*
+ * Copyright (C) 2017 Oracle Corporation
+ *
+ * This file is part of VirtualBox Open Source Edition (OSE), as
+ * available from http://www.virtualbox.org. This file is free software;
+ * you can redistribute it and/or modify it under the terms of the GNU
+ * General Public License (GPL) as published by the Free Software
+ * Foundation, in version 2 as it comes in the "COPYING" file of the
+ * VirtualBox OSE distribution. VirtualBox OSE is distributed in the
+ * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
+ *
+ * The contents of this file may alternatively be used under the terms
+ * of the Common Development and Distribution License Version 1.0
+ * (CDDL) only, as it comes in the "COPYING.CDDL" file of the
+ * VirtualBox OSE distribution, in which case the provisions of the
+ * CDDL are applicable instead of those of the GPL.
+ *
+ * You may elect to license modified versions of this file under the
+ * terms and conditions of either the GPL or the CDDL or both.
+ */
+
+
+/*********************************************************************************************************************************
+*   Header Files                                                                                                                 *
+*********************************************************************************************************************************/
+#include <iprt/time.h>
+#include "internal/iprt.h"
+
+#include <iprt/err.h>
+#include <iprt/env.h>
+#include <iprt/string.h>
+#include <iprt/win/windows.h>
+#include "internal-r3-win.h"
+
+
+/*********************************************************************************************************************************
+*   Structures and Typedefs                                                                                                      *
+*********************************************************************************************************************************/
+typedef DWORD (WINAPI *PFNGETDYNAMICTIMEZONEINFORMATION)(PDYNAMIC_TIME_ZONE_INFORMATION);
+
+
+/*********************************************************************************************************************************
+*   Global Variables                                                                                                             *
+*********************************************************************************************************************************/
+/** Pointer to the GetDynamicTimeZoneInformation API if present. */
+static PFNGETDYNAMICTIMEZONEINFORMATION g_pfnGetDynamicTimeZoneInformation = NULL;
+/** Flipped after we've tried to resolve g_pfnGetDynamicTimeZoneInformation.  */
+static bool volatile                    g_fResolvedApi = false;
+
+
+RTDECL(int) RTTimeZoneGetCurrent(char *pszName, size_t cbName)
+{
+    AssertPtrReturn(pszName, VERR_INVALID_POINTER);
+    AssertReturn(cbName > 0, VERR_BUFFER_OVERFLOW);
+
+    /*
+     * Resolve API.
+     */
+    PFNGETDYNAMICTIMEZONEINFORMATION pfnApi;
+    if (g_fResolvedApi)
+        pfnApi = g_pfnGetDynamicTimeZoneInformation;
+    else
+    {
+        pfnApi = (PFNGETDYNAMICTIMEZONEINFORMATION)GetProcAddress(g_hModKernel32, "GetDynamicTimeZoneInformation");
+        g_pfnGetDynamicTimeZoneInformation = pfnApi;
+        g_fResolvedApi = true;
+    }
+
+    /*
+     * Call the API and convert the name we get.
+     */
+    union
+    {
+        TIME_ZONE_INFORMATION           Tzi;
+        DYNAMIC_TIME_ZONE_INFORMATION   DynTzi;
+    } uBuf;
+    RT_ZERO(uBuf);
+    DWORD     dwRc;
+    PCRTUTF16 pwszSrcName;
+    size_t    cwcSrcName;
+    if (pfnApi)
+    {
+        dwRc = pfnApi(&uBuf.DynTzi);
+        pwszSrcName = uBuf.DynTzi.TimeZoneKeyName;
+        cwcSrcName  = RT_ELEMENTS(uBuf.DynTzi.TimeZoneKeyName);
+    }
+    else
+    {
+        /* Not sure how helpful this fallback really is... */
+        dwRc = GetTimeZoneInformation(&uBuf.Tzi);
+        pwszSrcName = uBuf.Tzi.StandardName;
+        cwcSrcName  = RT_ELEMENTS(uBuf.Tzi.StandardName);
+    }
+    if (dwRc != TIME_ZONE_ID_INVALID)
+    {
+        Assert(*pwszSrcName != '\0');
+        return RTUtf16ToUtf8Ex(pwszSrcName, cwcSrcName, &pszName, cbName, &cbName);
+    }
+    return RTErrConvertFromWin32(GetLastError());
+}
+
