我試圖在C#中實現CTime::GetTime()
方法的行爲。在C#中實現相同的行爲CTime.GetTime()方法
在這裏有我的控制檯應用程序的代碼片段(用C++編寫/ CLI):
int main(array<System::String ^> ^args)
{
int epochYear = 1970;
int epochMonth = 1;
int epochDay = 1;
DateTime managedEpochDate = DateTime(epochYear, epochMonth, epochDay);
int year = 2013;
int month = 2;
int day = 13;
int hour = 9;
int minutes = 49;
int seconds = 46;
// DateTime/CTime -> Numeric Time (__time64_t)
DateTime managedDateTime = DateTime(year, month, day, hour, minutes, seconds);
CTime nativeDateTime = CTime(year, month, day, hour, minutes, seconds);
DWORD nativeTimeToSerialize = nativeDateTime.GetTime();
UInt32 managedTimeToSerialize = (managedDateTime - managedEpochDate)
.TotalSeconds;
}
在結束我有以下不同的值:
- nativeTimeToSerialize = 1360745386
- managedTimeToSerialize = 1360748986
任何人都可以幫助我理解這種差異的原因嗎?
區別是3600秒或1小時。這與你的時區有什麼關係? – Jon
CTime有聲明是否應考慮夏令時的功能 - 我的猜測是DateTime會自動執行此操作 - 因此小時的差異 – benjymous
@benjymous實際上這是另一種方式 - 請參閱我的答案。 – BartoszKP