fix the issue #370, support for compilation of vs2019

This commit is contained in:
slguan 2019-08-22 18:26:57 +08:00
parent e21091a6cd
commit 35aa9a95e4
3 changed files with 32 additions and 0 deletions

View File

@ -189,6 +189,19 @@
* -------------------------------------------------------------
*/
/*
_MSC_VER 1910 vs2019
_MSC_VER 1910 vs2017
_MSC_VER 1900 vs2015
_MSC_VER 1800 vs2013
*/
#ifdef _MSC_VER
#if _MSC_VER >= 1900
#define HAVE_STRUCT_TIMESPEC
#endif
#endif
/* Try to avoid including windows.h */
#if (defined(__MINGW64__) || defined(__MINGW32__)) && defined(__cplusplus)
#define PTW32_INCLUDE_WINDOWS_H

View File

@ -858,6 +858,15 @@ void tsSetTimeZone() {
* e.g., the local time zone of London in DST is GMT+01:00,
* otherwise is GMT+00:00
*/
#ifdef _MSC_VER
#if _MSC_VER >= 1900
// see https://docs.microsoft.com/en-us/cpp/c-runtime-library/daylight-dstbias-timezone-and-tzname?view=vs-2019
int64_t timezone = _timezone;
int32_t daylight = _daylight;
char **tzname = _tzname;
#endif
#endif
int32_t tz = (-timezone * MILLISECOND_PER_SECOND) / MILLISECOND_PER_HOUR;
tz += daylight;

View File

@ -16,6 +16,7 @@
#include <assert.h>
#include <stdint.h>
#include "os.h"
#include "taosmsg.h"
#include "textbuffer.h"
#include "tinterpolation.h"
@ -38,6 +39,15 @@ int64_t taosGetIntervalStartTimestamp(int64_t startTime, int64_t timeRange, char
*
* TODO dynmaically decide the start time of a day
*/
#ifdef _MSC_VER
#if _MSC_VER >= 1900
// see https://docs.microsoft.com/en-us/cpp/c-runtime-library/daylight-dstbias-timezone-and-tzname?view=vs-2019
int64_t timezone = _timezone;
int32_t daylight = _daylight;
char** tzname = _tzname;
#endif
#endif
int64_t revStartime = (startTime / timeRange) * timeRange + timezone * MILLISECOND_PER_SECOND;
int64_t revEndtime = revStartime + timeRange - 1;
if (revEndtime < startTime) {