asp.net c# - 组合/格式化来自不同来源的日期和时间

时间:2012-01-04 11:55:42

标签: asp.net c#-3.0

我正在从外部源解析XML文件,我有2个属性,分别包含日期和时间。我正在寻找最好的方法来将这些格式化为我可以解析为日期的格式,以便我可以用它来做事情,但目前我只是通过方法I&#得到错误或没有结果#&# 39;我试过了。

日期的格式为" 20111215" - 这是英国的yyyymmdd。 时间格式为" 1417 + 0000"我认为是格林威治标准时间加上偏差?

基本上我需要把它们带到英国时间。我尝试在单独的部分上使用DateTime.Parse,但两者都给出错误,因为格式无效。在日期部分尝试了String.Format,但根本没有改变它。我认为我需要在解析之前将2结合起来,但我不确定是否需要对其进行任何其他操作以使其可接受。

任何帮助表示感谢。

4 个答案:

答案 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);