2017-12-25 23 views
1

これは、上記のコードは '悪いキャスト' 例外をスローHow to get the current time zone?Windowsの現在のBoostタイムゾーンを取得するにはどうすればよいですか?

#include <ctime> 
tzset(); 
time_zone_ptr zone(new posix_time_zone(tzname[localtime(0)->tm_isdst])); 

に似ています。 tznameまたはGetTimeZoneInformationのタイムゾーンは、「中国標準時」のような文字列であり、Boostタイムゾーンでは受け入れられません。

このような基本的な問題を簡単に解決する方法はありますか? Howard Hinnant's time zone libraryを使用して

答えて

1

、以下では、Windows上で現在のIANA time zone名を出力します:

#include "date/tz.h" 
#include <iostream> 

int 
main() 
{ 
    std::cout << date::current_zone()->name() << '\n'; 
} 

一部installationは、Windows上で必要とされます。私にとっては、上記のプログラムの出力:

America/New_York 

implementationGetDynamicTimeZoneInformationを使用して、現在のWindowsのタイムゾーンを調べ、その後、IANA time zone名にネイティブのWindowsタイムゾーン名からマップするためにthis Unicode mappingを使用しています。

関連する問題