簡體   English   中英

DateTime到time_t會在C ++端產生Hour:2

[英]DateTime to time_t produces Hour: 2 on c++ side

下面的代碼片段在c#中將DateTime轉換為time_t 在C ++中,我使用localtime_s將其轉換回,我得到tm_hour = 2 ,為什么?

I convert: DateTimeUtils.Secs(DateTime.Parse("2015-05-01"))

public static Int64 Secs(DateTime dt)
    {
      var delta = dt - new DateTime(1970, 1, 1, 0, 0, 0, DateTimeKind.Utc);
      return Convert.ToInt64(delta.TotalSeconds);
    }

time_t DropTimeFromDate(time_t time)
    {
        struct tm timeInfo;
        localtime_s(&timeInfo, &time);              

        timeInfo.tm_hour = 0;
        timeInfo.tm_min = 0;
        timeInfo.tm_sec = 0;        

        return mktime(&timeInfo);               
    }

我應該以某種方式解決c#轉換嗎?

我在英國,目前在UTC + 1:00(英國夏令時),運行您的代碼,我得到的tm_hour為1而不是2,我只能猜測是由於我們處於不同的時區(UTC + 1是“ t始終為UTC + 1,時區通常令人頭疼)

無論哪種方式,問題都可以歸結為您用來轉換回time_t的C ++或C代碼-C#代碼很好

如果將localtime_s(&timeInfo,time)更改為gmtime_s(&timeInfo,time)

您應該有更好的運氣,后者會忽略當前時區,而只是將值視為原始UTC時間,如果可以的話,最好與之配合使用

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM