如何将两个字符串(日期和时间)合并到单个日期时间
本文关键字:时间 日期 单个 合并 两个 字符串 | 更新日期: 2023-09-27 17:59:57
我有两个字符串:
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);
我能做些什么来完成这项工作?
尝试这样做;
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);
这是一个演示。
HH 使用从 00
到 23
的 24 小时制。例如; 1:45:30 AM -> 01
和1:45:30 PM -> 13
h 使用 12 从 1 到 12 的时钟。例如; 1:45:30 AM -> 1
和1:45:30 PM -> 1
查看更多信息 自定义日期和时间格式字符串
您的问题在于您的小时说明符;您需要h
(小时,使用 1 到 12 的 12 小时制(,而不是HH
(小时,使用 24 小时制从 00 到 23(。
我有不同的格式,上面的答案不起作用:
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}
尝试使用与字符串值的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);
问题是您指定的格式字符串不正确。
"HH"表示 dwo 数字小时,但您有一个个位数小时。
请改用"h"。
所以完整格式是'dd/MM/yy h:mm:ss tt'
以下代码将执行您想要的操作。我使用英国文化来照顾你约会的 d/m/y 结构:
string string1 = "13/2/09";
string string2 = "2:35:10 PM";
DateTime combined = DateTime.Parse(string1 + ' ' + string2, new CultureInfo("UK"));
由于 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);
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(..)
参数。
使用 DateTime.Parse(( 分别解析日期和时间。然后将第二个的时间分量添加到第一个,像这样
var date = DateTime.Parse (one);
var time = DateTime.Parse (two);
var result = date + time - time.Date;