[英]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.