Ios swift中的日期格式化程序

Ios swift中的日期格式化程序,ios,swift,dateformatter,Ios,Swift,Dateformatter,我想在UTC+5:30时间下午9:02:00获取这种格式->2018年4月20日 用于firestore时间戳。我已经尝试了这段代码,但是没有得到上面所说的正确格式 let date = Date() let formatter = DateFormatter() formatter.dateFormat = "MMMM d yyyy hh:mm:ss a Z" formatter.timeZone = NSTimeZone(name: "IST") as TimeZone? let res

我想在UTC+5:30时间下午9:02:00获取这种格式->2018年4月20日
用于firestore时间戳。我已经尝试了这段代码,但是没有得到上面所说的正确格式

let date = Date()
let formatter = DateFormatter()

formatter.dateFormat = "MMMM d yyyy hh:mm:ss a Z"
formatter.timeZone = NSTimeZone(name: "IST") as TimeZone?

let result = formatter.string(from: date)
print(result)
已使用此格式化程序formatter.dateFormat=“MMMM d yyyy'T'hh:mm:ss a Z”

谢谢

您可以这样使用:

    let date = Date()
    let formatter = DateFormatter()
    formatter.dateFormat = "MMMM dd, yyyy 'at' hh:mm:ss a 'UTC'Z" //If you dont want static "UTC" you can go for ZZZZ instead of 'UTC'Z.
    formatter.timeZone = TimeZone(abbreviation: "IST")
    let result1 = formatter.string(from: date)
    print(result1)
注意:如果您不希望字符串中的UTC是静态的,您也可以在'hh:mm:ss a zzzzzz'处使用格式
“MMMM dd,yyyyy”

感谢您对格式的改进

输出:

你喜欢吗

    let formatter = DateFormatter()
    //If you want it in your specific format you can simply add 'UTC'
    formatter.dateFormat = "MMMM dd, yyyy 'at' hh:mm:ss a 'UTC'Z"
    formatter.timeZone = NSTimeZone(name: "IST") as TimeZone?
    let result = formatter.string(from: Date())
    print(result)
注意:如果要为字符串设置当前时区,请在“hh:mm:ss a ZZZZ”处使用格式“MMMM dd,yyyy”

您得到的输出为


如果您不想在小时中前导零,当小时为一位数时,请尝试此方法。此外,您不需要将NSTimeZone键入时区。你可以直接使用时区

let date = Date()
let formatter = DateFormatter()
formatter.dateFormat = "MMMM dd, yyyy 'at' h:mm:ss a 'UTC'Z"
formatter.timeZone = TimeZone(abbreviation: "IST")
let result = formatter.string(from: date)
print(result)
2018年4月23日下午3:09:01 UTC+0530


“已经尝试了这段代码,但没有得到上面所述的正确格式。”它给了您什么?例如,我在您的格式中没有看到
'at'
。需要在两者之间添加“at”您确定吗?是的@AbhirajsinhThakore@Rock一个建议,,将
时间戳
保存为unix格式,如
1524476327
并在客户端对其进行分析,以便于用户界面使用。不知道为什么每个
dateFormat
都有许多格式,所以只要需求发生变化,您都会提出新问题。为什么不直接用谷歌搜索特定格式?可以使用UTC+5:30而不是+0530?请检查编辑后的答案
formatter.dateFormat=“MMMM d,yyyy”at'HH:mm:ss a Z”
执行相同的工作,而不需要组合。
HH
而不是
HH
对于事后的AM/PM来说很奇怪。谢谢@Larme的建议,