尝试将此Dec 1, 2016 1:48 PM CST
之类的字符串转换为DateTime对象。
Convert.ToDateTime(story.AddedDateString);
没有工作,我也没想到。
System.FormatException:字符串未被识别为有效字符串 约会时间。从索引21开始有一个未知单词。
是我收到的错误消息。想知道我是否可以在尝试转换之前告诉它格式?
答案 0 :(得分:9)
DateTime.ParseExact
会帮助你完成大部分工作。例如:
string input = "Dec 1, 2016 1:48 PM";
DateTime date = DateTime.ParseExact(input, "MMM d, yyyy h:mm tt", CultureInfo.InvariantCulture);
但是,它不通过缩写处理时区,因为multiple time zones with CST是缩写。转换" CST"在框架内不直接支持偏移量。
如果您转换为包含偏移的格式,您可以将其转换为:
string input = "Dec 1, 2016 1:48 PM -06:00";
DateTime date = DateTime.ParseExact(input, "MMM d, yyyy h:mm tt K", CultureInfo.InvariantCulture);
答案 1 :(得分:2)
您可以使用DateTime.ParseExact()
并使用可用的DateTime格式化程序指定格式字符串。
举个例子:
string date = "Dec 1, 2016 1:48 PM CST";
DateTime parsedDate = DateTime.ParseExact(myDate, "MMM d, yyyy h:mm tt", CultureInfo.InvariantCulture);
唯一的问题是它不会处理您的时区。您必须通过用UTC偏移替换字符串的那部分来处理时区(如果您使用DateTime.ParseExact()
格式zzz
,-06:00
会处理该lazy var persistentContainer: NSPersistentContainer = {
let description = NSPersistentStoreDescription()
description.shouldInferMappingModelAutomatically = true
description.shouldMigrateStoreAutomatically = true
let container = NSPersistentContainer(name: "MY_APP")
container.persistentStoreDescriptions = [description]
let description = NSPersistentStoreDescription()
description.shouldInferMappingModelAutomatically = true
description.shouldMigrateStoreAutomatically = true
container.persistentStoreDescriptions = [description]
container.loadPersistentStores(completionHandler: { (storeDescription, error) in
if let error = error as NSError? {
fatalError("Unresolved error \(error), \(error.userInfo)")
}
})
return container
}()
// MARK: - Core Data Saving support
func saveContext () {
let context = persistentContainer.viewContext
if context.hasChanges {
do {
try context.save()
} catch {
let nserror = error as NSError
fatalError("Unresolved error \(nserror), \(nserror.userInfo)")
}
}
}
或者在获得实际日期对象后删除该部分字符串并计算时区。
您可以在https://msdn.microsoft.com/en-us/library/w2sa9yss(v=vs.110).aspx
了解更多信息