文字列2017-06-02T00:00:00 + 05:30を.netで解析し、日時の値を2017-06-02:00:00:00として取得したい。サーバーがこの日付を東部時間帯に変換していることを意味します。しかし、私は与えられた時間帯にそれを保存したい。どんな助けもありがたい。サーバ上の.netの日付タイムゾーンの問題
答えて
CultureInfo culture = CultureInfo.CreateSpecificCulture("en-US");
DateTime dt = DateTime.ParseExact("2017-06-02T00:00:00+05:30", "yyyy-MM-ddTHH:mm:sszzz", culture);
を使用する必要があります。これを行った後、東部時間帯の日付が変換されます。私は私が与えたのと同じタイムゾーンでdatetimeが必要です。たとえば、この「2017-06-02T12:30:00 + 05:30」が「2017-06-02 12:30:00」として必要です。しかし、あなたの解決策を適用した後、私は2017-06-01 3:00 PM –
はい。しかし、 '.Kind'プロパティは異なります。これは、適切な時間を持って、サーバーのローカルに変換されます。コンピュータはあなたが何時になるかを知っています。あなたがEasternのためにもう一度それを出力すれば、それは適切な時を示すでしょう。 –
[編集]リンクを使用して、このコードの仕組みを説明し、コードを提供するだけではありません。将来の読者に役立つ可能性が高いためです。 [回答]も参照してください。 [ソース](http://stackoverflow.com/users/5244995) –
私はのDateTimeOffsetを使用すると、あなたが必要なものを与えると確信しています。
CultureInfo culture = CultureInfo.CreateSpecificCulture("en-US");
string dateString = "2017-06-02T00:00:00+05:30";
DateTimeOffset offset = DateTimeOffset.Parse(dateString, culture);
// adjustedDateTime should contain 6/2/2017 12:00:00 AM. There are other properties on offset such as LocalDateTime to provide other options
DateTime adjustedDateTime = offset.DateTime;
あなたの入力はタイムゾーンオフセットが含まれている、とあなたは.Kind
== DateTimeKind.Unspecified
でDateTime
を求めているように見えるので、あなたは、少なくともではない、あなたの入力文字列を変更することなく、DateTime.Parse
またはDateTime.ParseExact
を使用することはできません。カスタムフォーマッタ(K
、zzz
など)とDateTimeStyles
を組み合わせて指定しないと、指定しない種類のDateTime
が返されます。彼らは常にオフセットでピックアップし、あなたが現地時間またはUTCのどちらかが必要であると仮定します。
だから、いくつかの選択肢があります。
解析する前に文字列を変更して、オフセットを切り捨てます。
DateTimeOffset
としてstring s = "2017-06-02T00:00:00+05:30"; DateTime dt = DateTime.ParseExact(s.Substring(0, 19), "yyyy-MM-dd'T'HH:mm:ss", CultureInfo.InvariantCulture);
解析、そして
DateTime
プロパティを取ります。string s = "2017-06-02T00:00:00+05:30"; DateTimeOffset dto = DateTimeOffset.ParseExact(s, "yyyy-MM-dd'T'HH:mm:sszzz", CultureInfo.InvariantCulture); DateTime dt = dto.DateTime;
は個人的に、私はあなたも、ちょうど全体DateTimeOffset
を使用することを検討してオプション2を好みます。これは通常、ほとんどのシナリオに適しています。
また、この形式を定義するISO-8601仕様では常にグレゴリオ暦システムが使用されるため、この形式の文字列を解析するときは、不変のカルチャがローカルの文化よりも優先されることに注意してください。他のカルチャーを使用している場合は、別のカレンダーシステムの数値を解釈することができます。これによりエラーが発生する可能性があります。
ありがとうマットは、今働いている。 –
- 1. PostgreSQLの日付タイムゾーンの問題
- 2. .Net DataTable日付問題
- 3. .Netのタイムゾーンで日付のみの日付を処理する
- 4. Grailsのタイムゾーンと書式設定の日付の問題
- 5. さまざまなタイムゾーンでのMySQLの日付問題
- 6. タイムゾーンの日付?
- 7. 日付計算 - 夏時間(DST)とタイムゾーンの問題 - トルコ
- 8. 奇妙なJavaタイムゾーン日付変換の問題
- 9. 日時とPytzタイムゾーン.weekday()の問題
- 10. 日付の問題
- 11. SASの日付と日付の問題
- 12. タイムゾーンの問題
- 13. ローリングUTC日付上のファイルではなく、サーバの日付
- 14. の.NET DataAnnotationとグローバリゼーションの問題(サーバー側)日付の
- 15. PHPサーバでの日時の問題
- 16. Java webserviceおよび.netクライアント日付データの補間の問題
- 17. フォーマットの日付の問題
- 18. MySQLの日付の問題
- 19. サーバ上でのアクセス許可の問題
- 20. NLPタイムゾーンの問題
- 21. EKEventEditViewControllerタイムゾーンの問題
- 22. タイムゾーンの問題mysql
- 23. Django:タイムゾーンの問題
- 24. タイムゾーンの問題 - アンドロイド
- 25. 日付検索の問題
- 26. 日付形式の問題
- 27. iOS:dateOfMonthを日付の問題
- 28. Oracleの日付問題
- 29. ブートストラップ日付ピッカーの問題
- 30. 日付フィルタリングの問題
与えられたタイムゾーンは05:30から解析されるか、または指定されたタイムゾーンは東部標準時です。私は05:30は複数の選択肢のタイムゾーンかもしれないことを意味します。 – ntohl
また、どのような状況でも05:30をタイムゾーンに解析しないように注意してください> http://infiniteundo.com/post/25509354022/more-falsehoods-programmers-believe-about-time – ntohl
「DateTime」タイプはタイムゾーン情報を保持する。あなたは、ローカルまたはUTC時間のみを得ることができます。オフセットを保持する場合は、DateTimeOffset –