3

日付の 1 つの文字列を DateTime に変更したかっただけです。

ただし、印刷しようとすると、常に結果が5/31/20098:00:00 AM

なぜこのことが起こるのか分かりますか?

namespace Test
{
    class Test
    {
        static void Main()
        {
            Parse("5/31/2009 12:00:00 AM" );
        }

        static readonly string ShortFormat = "M/d/yyyy hh:mm:ss tt";

        static readonly string[] Formats = { ShortFormat };

        static void Parse(string text)
        {
            // Adjust styles as per requirements
            DateTime result = DateTime.ParseExact(text, ShortFormat,
                                                  CultureInfo.InvariantCulture,
                                                  DateTimeStyles.AssumeUniversal);
            Console.WriteLine(result);
            Console.WriteLine(result);
        }
    }
}
4

6 に答える 6

4

を使用する必要があります。DateTimeStyles.NoneまたはDateTimeStyles.AssumeLocalDateTime解析でタイムゾーンを考慮しないようにする場合は、次のようにします。

DateTime result = DateTime.ParseExact(text, ShortFormat,
                                      CultureInfo.InvariantCulture,
                                      DateTimeStyles.None);

自動タイムゾーンを使用DateTimeStyles.AssumeUniversalすると、コンピューターのタイムゾーンに対して変換が行われます。

ドキュメントを参照してください:

AssumeUniversal-解析された文字列にタイムゾーンが指定されていない場合、文字列はUTCを示していると見なされます。

于 2012-05-14T12:22:30.363 に答える
2

MM/dd/yyyy hh:mm:ss tt日付形式について書く必要があると思います。

于 2012-05-14T12:09:57.540 に答える
1

指定した形式でを印刷するには、 メソッドDateTimeを使用する必要がありますToString。そのようです。

result.ToString("M/d/yyyy hh:mm:ss tt");

2 番目のパラメーター ( ) は、文字列 ( ) を解析するために必要なformat形式を定義します。S

于 2012-05-14T12:11:11.633 に答える
0

あなたのタイムゾーンにもよりますが、あなたのタイムゾーンは GMT-4 ではなく GMT+4 だと思います。とにかく、次を使用してください:

DateTimeStyles.AssumeLocal

それ以外の:

DateTimeStyles.AssumeUniversal
于 2012-05-14T12:30:00.000 に答える
0

すべての DateTime 形式については、こちらこちらで説明しています。代わりに使用する必要があります

static readonly string ShortFormat = "MM/dd/yyyy hh:mm:ss tt";
于 2012-05-14T12:10:17.277 に答える
0

ショートフォーマットをに変更

static readonly string ShortFormat = "MM/dd/yyyy hh:mm:ss tt";

あなたの弦はこれを表します

"05/31/2009 12:00:00 AM"
"MM/dd/yyyy hh:mm:ss tt"

上の数字は下のフォーマットに対応しています

于 2012-05-14T12:10:32.033 に答える