将DateTime从奇怪的格式转换为DateTime对象

时间:2015-04-28 17:06:15

标签: c# vb.net datetime

通常从DateTime转换string非常简单,但我遇到了这种格式:

Mon Jan 05 17:38:34 +1100 2015

这看起来很奇怪,也导致DateTime.Parse()失败。所有的元素都在那里。有没有办法将此转换为DateTime而不执行string.split(" ")将其划分为块。虽然标准超出了我的范围,但看起来它可能是ISO标准。

为了澄清,我希望在使用string将上述示例DateTime转换为.NET中的C#对象时提供一些帮助,并希望不分割如果可能的话,字符串。

(@编辑,为什么你会批准一个编辑,将暂停的句子改成一个英语不好的连续句子?请继续编辑以便在编辑时使用epeen -.-)

2 个答案:

答案 0 :(得分:6)

您可以指定确切的格式:

var text = "Mon Jan 05 17:38:34 +1100 2015"
var date = DateTime.ParseExact(text, "ddd MMM dd HH:mm:ss zzz yyyy", CultureInfo.InvariantCulture);

如评论中所述,较少见的zzz部分代表offset from UTC。出于这个原因,您可能更愿意使用DateTimeOffset(使用相同的格式字符串)进行解析,因为它比DateTime更好地处理此概念。但是,您的要求可能不允许这样做。

答案 1 :(得分:1)

这对我有用:

//in this example it is called in viewDidLoad
func viewDidLoad() {
    var urlString = "urlstring"
    retrieveDataFromXML(urlString, {(result) -> Void in
        //result is weekForecasts

        //UI elements can only be updated on the main thread, so get the main 
        //thread and update the UI element on that thread
        dispatch_async(dispatch_get_main_queue(), {
            self.currentTemperatureLabel.text = result[0] //or whatever index you want
            return
        })
    })
}