Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Converting a time string to append with DateTime object

I have a time string as 12:48 AM. I want to convert this string into TimeSpan to append with DateTime Object. Currently I am trying the following snippets.

string format = "dd/MM/yyyy";
CultureInfo provider = CultureInfo.InvariantCulture;
var date = DateTime.ParseExact(dateValue, format, provider);

string timeFormate = "H:mm AM";
string timeValue = "12:48 AM";
var time = TimeSpan.ParseExact(timeValue,timeFormate,provider);
DateTime launchDate = date + time;

I am getting

Input string was not in a correct format

exception at line

 var time = TimeSpan.ParseExact(timeValue,timeFormate,provider);

Please suggest me how to convert my specified string into time.

like image 337
Ishtiaq Avatar asked Dec 26 '22 02:12

Ishtiaq


2 Answers

You need to parse that time into DateTime and then simply extract the TimeOfDay out of it when appending to the original date:

using System;
using System.Globalization;

namespace Sample
{
    class Program
    {
        static void Main(string[] args)
        {
            var dateValue = "10/03/1987";
            var date = DateTime.ParseExact(dateValue, "dd/MM/yyyy", CultureInfo.InvariantCulture);

            var timeValue = "12:48 AM";
            var time = DateTime.ParseExact(timeValue, "h:mm tt", CultureInfo.InvariantCulture);

            var dateTime = date + time.TimeOfDay;

            Console.WriteLine(date);
            Console.WriteLine(time);
            Console.WriteLine(dateTime);
        }
    }
}

OUTPUT:

3/10/1987 12:00:00 AM
11/12/2014 12:48:00 AM
3/10/1987 12:48:00 AM
like image 102
B.K. Avatar answered Feb 16 '23 09:02

B.K.


You can parse it to DateTime and use it's TimeOfDay property to get the time:

DateTime time = DateTime.ParseExact("12:48 AM", "h:mm tt", CultureInfo.InvariantCulture);
DateTime launchDate = date + time.TimeOfDay;

Note that i've also changed the format string since you need tt for the AM/PM designator.

like image 36
Tim Schmelter Avatar answered Feb 16 '23 09:02

Tim Schmelter