我正在从外部源解析XML文件,我有2个属性,分别包含日期和时间。我正在寻找最好的方法来将这些格式化为我可以解析为日期的格式,以便我可以用它来做事情,但目前我只是通过方法I&#得到错误或没有结果#&# 39;我试过了。
日期的格式为" 20111215" - 这是英国的yyyymmdd。 时间格式为" 1417 + 0000"我认为是格林威治标准时间加上偏差?
基本上我需要把它们带到英国时间。我尝试在单独的部分上使用DateTime.Parse,但两者都给出错误,因为格式无效。在日期部分尝试了String.Format,但根本没有改变它。我认为我需要在解析之前将2结合起来,但我不确定是否需要对其进行任何其他操作以使其可接受。
任何帮助表示感谢。
答案 0 :(得分:0)
如果您将字段连接在一起,则可以使用DateTime.TryParseExact
将其解析为DateTime
。
string input = string.Format("{0} {1}", dateString, timeString);
DateTime parsed;
if(DateTime.TryParseExact(input,
"yyyyMMdd HHmmK",
CultureInfo.InvariantCulture,
DateTimeStyles.None,
out parsed))
{
// parsed OK, use the parsed variable
}
答案 1 :(得分:0)
string date = "20111215";
string time = "1417+0000";
string dateString = date + time;;
string format = "yyyyMMddHHmmK";
// or something similar, I'm not sure about the timezone
DateTime result = DateTime.ParseExact(dateString,
format,
CultureInfo.InvariantCulture);
答案 2 :(得分:0)
使用DateTimeOffset将时区合并到DateTime中。
string date = "20111215";
string time = "1417+0500";
string dateAndTime = date + time;
string format = "yyyyMMddHHmmzzz";
CultureInfo provider = CultureInfo.InvariantCulture;
DateTimeOffset t = DateTimeOffset.ParseExact(dateAndTime, format, provider);
答案 3 :(得分:-1)
我认为这应该有效(我没有测试过):
string dateString = "20111215";
string timeString = "1417+0000";
int year = int.Parse(dateString.Substring(0,4));
int month = int.Parse(dateString.Substring(4,2));
int day = int.Parse(dateString.Substring(6,2));
int hour = int.Parse(dateString.Substring(0,2));
int mins = int.Parse(dateString.Substring(2,2));
DateTime d = new DateTime(year, month, day, hour, mins, 0);