我正在编写代码,将两个日期从字符串转换为日期对象,但对于我传递给日期格式化程序的某些日期,这并不能正常工作。
这是我的代码:
let stringDateMinimum = "00:00 " + year + "-0" + String(month+1) + "-01"
let stringDateMaximum = "00:00 " + year + "-0" + String(month+2) + "-01"
let dateFormatter = DateFormatter()
dateFormatter.dateFormat = "HH:mm yyyy/MM/dd"
let minimimDate = dateFormatter.date(from: stringDateMinimum)
let maximumDate = dateFormatter.date(from: stringDateMaximum)
print(stringDateMinimum)
print(minimimDate ?? "")
print(stringDateMaximum)
print(maximumDate ?? "")
这是控制台中的输出:
00:00 2022-03-01
2022-03-01 00:00:00 +0000
00:00 2022-04-01
2022-03-31 23:00:00 +0000
如果比较控制台中的第3行和第4行,可以看到输入到日期格式化程序中的字符串与日期格式化程序的输出不匹配。
感谢Sweeper的评论。答案是在我输入日期格式化程序的字符串中包含一个时区。例如,我将日期格式更改为:
dateFormatter.dateFormat = "HH:mm yyyy/MM/dd Z"
并在字符串DateMinimum和字符串DateMaximum 中添加了我所在时区的+0000