我有两个字符串:
string one = "13/02/09";
string two = "2:35:10 PM";
我想将这两者结合在一起并转换为DateTime
。
我尝试了以下但不起作用:
DateTime dt = Convert.ToDateTime(one + " " + two);
DateTime dt1 = DateTime.ParseExact(one + " " + two, "dd/MM/yy HH:mm:ss tt", CultureInfo.InvariantCulture);
我可以做些什么来完成这项工作?
答案 0 :(得分:11)
试试这个;
string one = "13/02/09";
string two = "2:35:10 PM";
DateTime dt = Convert.ToDateTime(one + " " + two);
DateTime dt1 = DateTime.ParseExact(one + " " + two, "dd/MM/yy h:mm:ss tt", CultureInfo.InvariantCulture);
Console.WriteLine(dt1);
这是 DEMO 。
HH 使用从00
到23
的24小时制。例如; 1:45:30 AM -> 01
和1:45:30 PM -> 13
h 使用1小时至12小时的12小时制。例如; 1:45:30 AM -> 1
和1:45:30 PM -> 1
答案 1 :(得分:3)
您的问题与您的小时说明符有关;你想要h
(小时,使用12小时制1到12小时),而不是HH
(小时,使用24小时时钟来自00至23 )。
答案 2 :(得分:2)
尝试使用与您的字符串值匹配DateTime
格式的文化信息:
DateTime dt = Convert.ToDateTime(one + " " + two,
CultureInfo.GetCultureInfo("ro-RO"));
或修改输入字符串,使小时有2位数字:
string one = "13/02/09";
string two = "02:35:10 PM";
DateTime dt1 = DateTime.ParseExact(one + " " + two,
"dd/MM/yy HH:mm:ss tt",
CultureInfo.InvariantCulture);
答案 3 :(得分:1)
问题是您指定的格式字符串不正确。
'HH'表示一个两位数的小时,但你有一个小时的数字。
改用'h'。
所以完整格式为'dd / MM / yy h:mm:ss tt'
答案 4 :(得分:1)
使用DateTime.Parse()分别解析日期和时间。然后将第二个的时间组件添加到第一个,如此
var date = DateTime.Parse (one);
var time = DateTime.Parse (two);
var result = date + time - time.Date;
答案 5 :(得分:0)
由于AM / PM格式,使用string two = "02:35:10 PM";
代替string two = "2:35:10 PM";
和hh
代替HH
。
以下是代码:
string one = "13/02/09";
string two = "02:35:10 PM";
DateTime dateTime = DateTime.ParseExact(one + " " + two, "dd/MM/yy hh:mm:ss tt", CultureInfo.InvariantCulture);
答案 6 :(得分:0)
以下代码将执行您想要的操作。我用英国文化来处理你日期的d / m / y结构:
string string1 = "13/2/09";
string string2 = "2:35:10 PM";
DateTime combined = DateTime.Parse(string1 + ' ' + string2, new CultureInfo("UK"));
答案 7 :(得分:0)
Convert.ToDateTime
将DateTime.ParseExact
与您当前线程的文化结合使用,这样您只需执行以下操作即可让事情变得更清晰:
string date = "13/02/09";
string time = "2:35:10 PM";
DateTime dateTime = DateTime.Parse(date +" "+ time, new CultureInfo("en-GB"));
Console.WriteLine (dateTime);
这会得到结果13/02/2009 14:35:10
,并强制解析使用en-GB日期时间格式。如果您的Windows安装无论如何都是en-GB,则不需要CultureInfo(..)
参数。
答案 8 :(得分:0)
我的格式不同,以上答案无效:
string one = "2019-02-06";
string two = "18:30";
此格式的解决方案是:
DateTime newDateTime = Convert.ToDateTime(one).Add(TimeSpan.Parse(two));
结果将是:newDateTime {06-02-2019 18:30:00}