2

1900-01-01 00:00:00Z をどのように解析して DateTime オブジェクトにするのでしょうか?

        string temp = "1900-01-01 00:00:00Z";
        CultureInfo provider = CultureInfo.InvariantCulture;
        var date = DateTime.ParseExact(temp, "yyyy-MM-dd hh:mm:ssZ", provider);

これは私を返します:

1899/12/31 午後 7:00:00

4

4 に答える 4

4

あなたはESTにいると思います。時間から5時間を引いています。たぶん、これは時間を印刷する方法が原因ですか?GMTで印刷してみてください。または、ローカルのタイムゾーンで解析できます。

于 2011-06-03T18:59:14.187 に答える
3

値をどのように表示していますか?現地のタイムゾーンを日付に適用しているだけだと思います。

たとえば、次のように印刷してみてください。

  • date.Year
  • date.Kind
  • date.Hour

私の推測では、実際にdateは正しい値を持つUTCであることがわかるでしょう。DateTime

.NET が暗黙的にタイム ゾーンの変換を行っているのは残念ですが、.NET の日付と時刻の型には、とにかく何かが必要です :(

代わりに、DateTimeOffsetこれを使用することで、少し明確になります。

于 2011-06-03T18:59:41.017 に答える
0

このコードを使用できます

        DateTime a;
        var dt = DateTime.TryParse("30/05/1970",out a);
于 2013-09-05T08:23:46.740 に答える
0

デフォルトでは、指定された時間はマシンのローカル タイム ゾーンに合わせて調整されます。はそれdate.Kindを反映する必要があります。代わりに、時刻を世界時 (UTC) に合わせたい場合は、DateTimeStyles.AdjustToUniversalflag を の 4 番目のパラメーターとして使用しますParseExact

于 2013-09-05T08:32:03.403 に答える