我的时间字符串为12:48 AM
。我想将此字符串转换为TimeSpan
以附加DateTime
对象。目前我正在尝试以下代码段。
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;
我正在
输入字符串的格式不正确
行
的例外情况 var time = TimeSpan.ParseExact(timeValue,timeFormate,provider);
请建议我如何将指定的字符串转换为时间。
答案 0 :(得分:4)
您需要将该时间解析为DateTime
,然后在追加到原始日期时简单地从中提取TimeOfDay
:
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);
}
}
}
输出:
3/10/1987 12:00:00 AM
11/12/2014 12:48:00 AM
3/10/1987 12:48:00 AM
答案 1 :(得分:3)
您可以将其解析为DateTime
并使用TimeOfDay
property来获取时间:
DateTime time = DateTime.ParseExact("12:48 AM", "h:mm tt", CultureInfo.InvariantCulture);
DateTime launchDate = date + time.TimeOfDay;
请注意,我还更改了格式字符串,因为AM / PM指示符需要tt
。
答案 2 :(得分:1)
12:48 AM
不是TimeSpan
,而是DateTime
的时间部分。您需要将其解析为DateTime
,而不是TimeSpan
。
您可以用来添加.TimeOfDay
property的时间并将其添加到date
。此属性仅将DateTime
的时间部分作为TimeSpan
返回。
string timeValue = "12:48 AM";
var time = DateTime.ParseExact(timeValue, "h:mm tt", CultureInfo.InvariantCulture);
DateTime launchDate = date + time.TimeOfDay;
答案 3 :(得分:1)
从MSDN检查此页面,这可以帮助您
http://msdn.microsoft.com/en-us/library/dd992370(v=vs.110).aspx
答案 4 :(得分:1)
如果你想要一个DateTime对象
string timeValue = "10:48 AM";
string timeFormate = "h:mm tt";
var dateTime = DateTime.ParseExact(timeValue, timeFormate, CultureInfo.InvariantCulture);
编辑: 如果你想为给定的DateTime对象添加一个时间跨度,你应该跳过" AM / PM"
string timeValue = "2:30";
DateTime launchTime = DateTime.Now;
TimeSpan timeSpan;
if (TimeSpan.TryParse(timeValue, out timeSpan))
{
launchTime = launchTime.Add(timeSpan);
}
BR