【问题标题】:How to know Date format getting from sever [duplicate]如何知道从服务器获取的日期格式 [重复]
【发布时间】:2021-12-02 18:09:58
【问题描述】:

我正在尝试获取从服务器获取的日期的日期格式。

这个日期的格式是什么:

2021-10-14T17:53:03.753588+05:30

我尝试了什么:

yyyy-MM-dd'T'HH:mm:ssXXX 

但它不起作用。

【问题讨论】:

标签: ios swift date nsdate nsdateformatter


【解决方案1】:

如何(我的提示和步骤):

当您为String -> Date 寻找日期格式而苦苦挣扎时,请问您:我的格式到底在做什么?它在解析/解释什么?让我们看看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

等等。但这应该涵盖您的大多数情况(基本问题)。

【讨论】:

    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-12-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多