提问人:Sham Dhiman 提问时间:10/11/2023 最后编辑:AlexanderSham Dhiman 更新时间:10/11/2023 访问量:55
如何在字符串 Swift 中附加单引号?
How to append single quotes in string Swift?
问:
我有一个字符串,如 .我想附加单引号和连字符,我的结果应该是这样的:。20230914T07:37:43.000Z
2023-09-14'T'07:37:43.000Z
我已经尝试了下面的代码,但是我的字符串中会自动添加一个反斜杠,从而导致.2023-09-14'T'07:37:43.000Z
法典:
let dateFormatterGet = DateFormatter()
dateFormatterGet.dateFormat = "yyyy-MM-dd'T'HH:mm:ss.SSSZ"
let dateFormatterPrint = DateFormatter()
dateFormatterPrint.dateFormat = formatter
var welcome = "20230914T07:37:43.000Z"
welcome.insert("-", at: welcome.index(welcome.startIndex, offsetBy: 4))
welcome.insert("-", at: welcome.index(welcome.startIndex, offsetBy: 7))
print(2023-09-14T07:37:43.000Z)
// Option 1
welcome.insert(#"'"#, at: welcome.index(welcome.startIndex, offsetBy: 10))
welcome.insert(#"'"#, at: welcome.index(welcome.startIndex, offsetBy: 12))
// Option 2
welcome.insert("'", at: welcome.index(welcome.startIndex, offsetBy: 10))
welcome.insert("'", at: welcome.index(welcome.startIndex, offsetBy: 12))
dateString = welcome
let date: Date? = dateFormatterGet.date(from: dateString)
print(date) // -> nil
return dateFormatterPrint.string(from: date!); ////Crash
// Output: '2023-09-14'T'07:37:43.000Z'
我已经尝试了这两个选项,但我仍然会自动将反斜杠添加到我的字符串中。
问题:如何在没有黑斜杠的情况下附加单引号和连字符?
有人可以向我解释如何做到这一点吗,我已经尝试了上面的代码,但还没有结果。如果我做错了,请纠正我。
任何帮助将不胜感激
答:
2赞
HangarRash
10/11/2023
#1
没有理由在字符串中添加撇号。撇号只需要在日期格式化程序的 in 周围,以指示 是按字面意思处理的,而不是作为格式说明符。welcome
T
dateFormat
T
您还应该避免在字符串中添加连字符,而只需从 中删除连字符即可。a 的整个想法是选择与您将要解析的字符串匹配的日期格式。welcome
dateFormat
dateFormat
考虑到所有这些因素,您的代码将变成:
let dateFormatterGet = DateFormatter()
dateFormatterGet.dateFormat = "yyyyMMdd'T'HH:mm:ss.SSSZ"
var welcome = "20230914T07:37:43.000Z"
if let date = dateFormatterGet.date(from: welcome) {
let dateFormatterPrint = DateFormatter()
dateFormatterPrint.dateFormat = formatter
return dateFormatterPrint.string(from: date)
} else {
// return some indicator of failure
}
或者,您可能希望使用 ISO8601DateFormatter
来处理受支持的ISO8601格式之一的字符串。
评论
1赞
Leo Dabus
10/11/2023
与问题本身无关,但如果投入生产,这仍然会有一些问题。在设置 dateFormat 之前,您没有设置日期格式化的日历和区域设置。尝试将设备的日历设置为佛教日历,或者简单地将设备的 24 小时设置更改为 12 小时,并尝试解析中午 12 点之后时间小时的日期字符串。
0赞
HangarRash
10/11/2023
@LeoDabus 好点。我更关注问题的细节,但将区域设置设置为公历和日历设置为公历是个好主意。话又说回来,按照我在最后的建议使用会更简单。en_US_POSIX
ISO8601DateFormatter
评论