我在Swift中使用日期。我必须将字符串转换为日期,但发生了一些奇怪的事情。当我在模拟器上运行代码并将日期字符串传递给格式化程序时,它返回nil。但当我在物理设备上运行代码时,它工作得很好。
class ChatViewController: MessagesViewController {
var uid: String
var isNewConversations:Bool
private var messages = [Message]()
private var selfSender: Sender?
var senderUid: String
var conversation_Id: String?
public static let dateFormatter: DateFormatter = {
let formatter = DateFormatter()
formatter.dateStyle = .medium
formatter.timeStyle = .long
formatter.locale = .current
return formatter
}()
}
我是这样使用它的
let date = ChatViewController.dateFromatter.date(from: dateString)
我在字符串中输入的日期是:“2023年1月8日晚上8:57:10 GMT+5”
我只是调试了整个代码,但我没有得到发生了什么。当我在物理设备上调试它时,它工作得很好,但当我在模拟器上运行它时,它工作得不好,即调试器显示在“日期”变量中你得到了零。
2条答案
按热度按时间ozxc1zmp1#
解析日期字符串时,切勿使用
dateStyle
和/或timeStyle
。始终使用dateFormat
。样式可能会因用户的区域设置和设备上的其他设置而异,也可能因用户的语言而异。由于需要解析固定格式的日期字符串,因此需要提供特定的日期格式。由于固定格式的日期字符串始终为英语,因此还必须在日期格式化程序中使用特殊的区域设置。
5rgfhyps2#
下面这个日期格式化程序如何: