web-dev-qa-db-ja.com

AM / PMからTimeSpan

this の逆を実現したい、つまり、フォーマットhh:mm ttstringをゼロ秒のTimeSpanに変換したい。

たとえば、09:45 pm21:45:00に変換されます。

20
wjm

最も簡単なアプローチは、おそらくDateTime.ParseExactを使用してDateTimeとして解析し、次に TimeOfDay を使用してTimeSpanを正確にすることです。 。

DateTime dateTime = DateTime.ParseExact(text,
                                    "hh:mm tt", CultureInfo.InvariantCulture);
TimeSpan span = dateTime.TimeOfDay;

Am = pm指定子をまた指定している場合、時間の先頭に0が表示されるのは奇妙です。 「09:45 pm」の代わりに「9:45 pm」を許可するために、フォーマット文字列で「hh」の代わりに「h」が必要になる場合があります。

(また、最初はTimeSpanの奇妙な使い方だと主張しますが、.NETの日付/時刻型は、私の見解ではやや混乱しています。 Noda時間 、しかし私は偏っている:)

62
Jon Skeet

この仕事は私にとって。

TimeSpan ts= DateTime.Parse("8:00 PM").TimeOfDay; 
12
Naveed Ahmed
TimeSpan tspan;

tspan = DateTime.ParseExact("01:45 PM", "hh:mm tt", CultureInfo.InvariantCulture).TimeOfDay;
0
ANSHUL VERMA

以下のコードスニペットを使用して、メリディエム時間をタイムスパンに変換し、タイムスパンを日付と時間のみのメリディエム時間に変換することもできます...

        TimeSpan ts = DateTime.Parse("8:00 PM").TimeOfDay;                        
        DateTime dateWithTimeSlot = DateTime.Today+ ts;              

        //for getting MM/dd/yyyy hh:mm tt format
        string dateWithMeridiemTimeSlot =  
            dateWithTimeSlot.ToString("MM/dd/yyyy hh:mm tt: ", CultureInfo.InvariantCulture);

        Console.WriteLine("For getting MM/dd/yyyy hh:mm tt format: "+dateWithMeridiemTimeSlot);

        //for getting only hh:mm tt format
        string meridiemTimeSlot =
            dateWithTimeSlot.ToString("hh:mm tt", CultureInfo.InvariantCulture);

        Console.WriteLine("For getting only hh:mm tt format: " + meridiemTimeSlot);

        Console.ReadLine();

楽しもう!

ありがとう

0
Rejwanul Reja