3文字を表示するためにDateTimeまたはTimeZone/TimeZoneInfoをフォーマットするにはどうすればよいですか?
-
20-09-2019 - |
質問
私は、必ずしも一緒に仕事をしなければならなかった独特のデータタイム形式を要求する仕様を使用しています。
プロセス時に、OFX(1ではない)データタイム(DTClientまたはdtserver)に次の形式でスタンプする必要があります。
20071015021529.000
ただし、例では表示されています。
20071015021529.000[-8:PST]
の声明を使用して最初のものに問題はありません
DateTime.Now.ToString("yyyyMMddHHmmss.fff")
私はどのように取得するかを理解することさえできます %z
正しいオフセットを取得します。
3文字のタイムゾーンコードは、私がつまずいているところです。 .NETでこれを取得する簡単な方法はありますか、それとも必要なものを出力して解析するためにコードを作成することになりますか?
解決
必要な3つの文字コードを正確に確認する必要があります。何だろう Europe/Paris
たとえば、与える?個人的には、タイムゾーン情報を実際に保存する必要がない限り、データをUTCに変換し、そのようにフォーマットします。
他のヒント
3文字のタイムゾーンコードは、国全体で一意ではなく、完全に標準化されていません。たとえば、「CST」は、「Central Standard Time(USA)」または「中国の標準時間」の略語になる可能性があります。正しいのは、ロケールに依存します。
私の知る限り、このようなコードを調べるための.NETフレームワークに組み込まれた機能はないため、自分で実装する必要があります。
さらに(ただし、おそらくこれを知っています)、この機能をどのように実装するかに注意する必要があります。 UTCオフセットとタイムゾーンコードの間には、必ずしも1対1の対応がありません。たとえば、UTC-0700はUSマウンテンスタンダードタイム(MST)のどちらかです また 米国太平洋昼光(PDT)。
Rを使用する場合、RFC形式が提供されます。それはあなたを助けますか?
String.Format("{0:r}", dt); // "Sun, 09 Mar 2008 16:05:07 GMT" RFC1123
あなたもすることができます これをチェックしてリンクしてください, 、それがあなたを助けることができるなら。