如何知道从服务器获取的日期格式

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 分钟差异),则问题可能是时区问题。
如果您有日期差异,也可能是时区问题(将其解释为午夜前后的小时差异,因此日期有所变化)。 如果您有年份差异,请检查您是否没有滥用 yyyyYYYY.

等但这应该涵盖你的大部分情况(基本问题)。

试试这个格式。 "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)")