ユーザーが作成したツイートの時刻を現地時間に変換するにはどうすればよいですか? created_at は、ツイートが作成された時刻を示しており、ユーザーの国に基づいています。C# を使用してローカルタイムに変更する方法を教えてください。時刻の形式は「Fri Jul 27 15:14:11 +0000 2012」です。utc_offset とは何を意味し、タイムゾーンを変更するためにどのように使用できますか?
私はタイムゾーンのことにはあまり詳しくありません。助けてくれてありがとう:)
DateTimeOffset
構造体を使用することをお勧めします。これにより、日付と時刻をキャプチャできるだけでなく、UTCからのオフセットもキャプチャできます。
Twitterの時間に使用する形式は次のとおりです。
string twitterDate = "Fri Jul 27 15:14:11 +0000 2012";
DateTimeOffset dt = DateTimeOffset.ParseExact(twitterDate,
"ddd MMM dd HH:mm:ss zzz yyyy", CultureInfo.InvariantCulture);
文書化されていませんzzzz
が、カスタム日時形式として機能し、オフセットを正しく解析できることに注意してください。これは、将来的にそれを信頼することに注意する必要があることを意味します(この機能を反映するようにドキュメントが変更されない限り)。
を取得するとDateTimeOffset
、UTCからのオフセットがわかります。現地時間で取得したい場合は、解析されたToLocalTime
メソッドを呼び出すことができDateTimeOffset
、ローカル設定に基づいてオフセットを持つインスタンスが返されます。
これはそれであるはずです:
DateTime localDateTime = DateTime.ParseExact(dateString, "ddd MMM dd HH:mm:ss zzz yyyy", new CultureInfo("en-US"));
DateTimeのコンストラクターでDateTimeKindを指定しない限り、DateTimeは、ワークステーション/サーバーの管理者がWindows用に選択したタイムゾーンになります。