如何知道从服务器获取的日期格式
How to know Date format getting from sever
我正在尝试获取从服务器获取的日期的日期格式。
这个日期的格式是什么:
2021-10-14T17:53:03.753588+05:30
我尝试了什么:
yyyy-MM-dd'T'HH:mm:ssXXX
但它不起作用。
如何(我的提示和步骤):
当您苦苦寻找 String
的日期格式时 -> Date
问您:我的格式到底在做什么? parsing/interpreting 是什么?让我们看看 Date
-> String
...
let formatter = DateFormatter()
formatter.dateFormat = "yyyy-MM-dd'T'HH:mm:ssXXX"
print(formatter.string(from: Date()))
输出:2021-10-14T13:06:38+02:00
:它与我们的字符串“相同”吗?不,有些是一样的,但不是全部...
让我们继续另一个提示:
让我们把我们的格式和字符串一个放在另一个上面:
2021-10-14T17:53:03.753588+05:30
yyyy-MM-dd'T'HH:mm:ssXXX
然后,让我们添加“空格”,使每个模式匹配其对应的输入:
2021-10-14 T 17:53:03.753588 +05:30
yyyy-MM-dd 'T' HH:mm:ss XXX
然后,让我们检查 doc(它已在我的网络浏览器中添加了书签)以了解模式的解释,并在需要时检查它们是否对应,并在需要时找到缺失的那个。
好的,所以我们根本没有解释 .753588
,这就是它失败的原因......
它用于小数秒,所以如果我们将格式更改为:"yyyy-MM-dd'T'HH:mm:ss.SSSXXX"
,它应该可以工作。请注意,如果需要,可以将 XXX
替换为 Z
...
现在,记住模式是区分大小写的,所以如果你有奇怪的小时、分钟或 nil,请检查你是否没有误用分钟与月、12 小时格式与 24 小时格式...
如果您有小时差异(或通常为 30 分钟差异),则问题可能是时区问题。
如果您有日期差异,也可能是时区问题(将其解释为午夜前后的小时差异,因此日期有所变化)。
如果您有年份差异,请检查您是否没有滥用 yyyy
与 YYYY
.
等但这应该涵盖你的大部分情况(基本问题)。
试试这个格式。
"yyyy-MM-dd'T'HH:mm:ss.SSSSSSXXX"
由于您在问题中提到的日期格式包含毫秒以及时区偏移信息。
解析日期后,您可以根据需要设置输出日期格式,并获得格式化日期。
let sampleDate = "2021-10-14T17:53:03.753588+05:30"
let dateFormatter = DateFormatter() dateFormatter.dateFormat = "yyyy-MM-dd'T'HH:mm:ss.SSSSSSXXX" // Set input date format.
let inputDate = dateFormatter.date(from: sampleDate)
print("Input Date:- \(inputDate)")
dateFormatter.dateFormat = "yyyy-MM-dd hh:mm:ss" // Set output date format as per need
let outputDate = dateFormatter.string(from: inputDate ?? Date())
print("Output Date:- \(outputDate)")
我正在尝试获取从服务器获取的日期的日期格式。
这个日期的格式是什么:
2021-10-14T17:53:03.753588+05:30
我尝试了什么:
yyyy-MM-dd'T'HH:mm:ssXXX
但它不起作用。
如何(我的提示和步骤):
当您苦苦寻找 String
的日期格式时 -> Date
问您:我的格式到底在做什么? parsing/interpreting 是什么?让我们看看 Date
-> String
...
let formatter = DateFormatter()
formatter.dateFormat = "yyyy-MM-dd'T'HH:mm:ssXXX"
print(formatter.string(from: Date()))
输出:2021-10-14T13:06:38+02:00
:它与我们的字符串“相同”吗?不,有些是一样的,但不是全部...
让我们继续另一个提示:
让我们把我们的格式和字符串一个放在另一个上面:
2021-10-14T17:53:03.753588+05:30
yyyy-MM-dd'T'HH:mm:ssXXX
然后,让我们添加“空格”,使每个模式匹配其对应的输入:
2021-10-14 T 17:53:03.753588 +05:30
yyyy-MM-dd 'T' HH:mm:ss XXX
然后,让我们检查 doc(它已在我的网络浏览器中添加了书签)以了解模式的解释,并在需要时检查它们是否对应,并在需要时找到缺失的那个。
好的,所以我们根本没有解释 .753588
,这就是它失败的原因......
它用于小数秒,所以如果我们将格式更改为:"yyyy-MM-dd'T'HH:mm:ss.SSSXXX"
,它应该可以工作。请注意,如果需要,可以将 XXX
替换为 Z
...
现在,记住模式是区分大小写的,所以如果你有奇怪的小时、分钟或 nil,请检查你是否没有误用分钟与月、12 小时格式与 24 小时格式...
如果您有小时差异(或通常为 30 分钟差异),则问题可能是时区问题。
如果您有日期差异,也可能是时区问题(将其解释为午夜前后的小时差异,因此日期有所变化)。
如果您有年份差异,请检查您是否没有滥用 yyyy
与 YYYY
.
等但这应该涵盖你的大部分情况(基本问题)。
试试这个格式。 "yyyy-MM-dd'T'HH:mm:ss.SSSSSSXXX"
由于您在问题中提到的日期格式包含毫秒以及时区偏移信息。
解析日期后,您可以根据需要设置输出日期格式,并获得格式化日期。
let sampleDate = "2021-10-14T17:53:03.753588+05:30"
let dateFormatter = DateFormatter() dateFormatter.dateFormat = "yyyy-MM-dd'T'HH:mm:ss.SSSSSSXXX" // Set input date format.
let inputDate = dateFormatter.date(from: sampleDate)
print("Input Date:- \(inputDate)")
dateFormatter.dateFormat = "yyyy-MM-dd hh:mm:ss" // Set output date format as per need
let outputDate = dateFormatter.string(from: inputDate ?? Date())
print("Output Date:- \(outputDate)")