AM/PM to TimeSpan

前端 未结 4 813
忘了有多久
忘了有多久 2020-12-18 18:55

I want to achieve the converse of this, that is, I want to convert a string with format hh:mm tt to a TimeSpan with zeroed seconds.

相关标签:
4条回答
  • 2020-12-18 19:25

    The simplest approach would probably be to parse it as a DateTime using DateTime.ParseExact, and then use the TimeOfDay to exact the TimeSpan.

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

    It's odd to see a leading 0 on a number of hours when you're also specifying an am/pm designator though. You might want "h" instead of "hh" in the format string, to allow "9:45 pm" instead of "09:45 pm".

    (I'd also argue that it's a strange use of TimeSpan in the first place, but then the .NET date/time types are somewhat messed up in my view. I'd recommend using Noda Time, but I'm biased :)

    0 讨论(0)
  • 2020-12-18 19:30

    You can convert meridiem time to timespan and also timespan to meridiem time with date and only time using below code snipet...

            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();
    

    Let's enjoy!

    Thanks

    0 讨论(0)
  • 2020-12-18 19:41
    TimeSpan tspan;
    
    tspan = DateTime.ParseExact("01:45 PM", "hh:mm tt", CultureInfo.InvariantCulture).TimeOfDay;
    
    0 讨论(0)
  • 2020-12-18 19:42

    This work for Me.

    TimeSpan ts= DateTime.Parse("8:00 PM").TimeOfDay; 
    
    0 讨论(0)
提交回复
热议问题