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.
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
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.
12:48 AM
is not a TimeSpan
, it is a time part of a DateTime
. You need to parse it to DateTime
, not TimeSpan
.
You can use to add .TimeOfDay
property of your time and add it to date
. This property returns only time part of your DateTime
as a TimeSpan
.
string timeValue = "12:48 AM";
var time = DateTime.ParseExact(timeValue, "h:mm tt", CultureInfo.InvariantCulture);
DateTime launchDate = date + time.TimeOfDay;
Check this Page from MSDN, this could help u
http://msdn.microsoft.com/en-us/library/dd992370(v=vs.110).aspx
If you want a DateTime object
string timeValue = "10:48 AM";
string timeFormate = "h:mm tt";
var dateTime = DateTime.ParseExact(timeValue, timeFormate, CultureInfo.InvariantCulture);
edit: if you want to add a timespan to a given DateTime object you should skip the "AM/PM"
string timeValue = "2:30";
DateTime launchTime = DateTime.Now;
TimeSpan timeSpan;
if (TimeSpan.TryParse(timeValue, out timeSpan))
{
launchTime = launchTime.Add(timeSpan);
}
BR
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.