Joh*_*ohn 43 iphone objective-c nsdateformatter
我有一个倒数计时器,从当前日期/时间到特定的未来日期/时间倒计时.除了一个问题外,它工作得很好.我使用NSDateFormatter和dateFromString输入未来日期.它似乎无法接受超过12的任何时间(小时),虽然表明它不支持24小时制.有没有办法启用24小时时钟支持或解决方法?这是我的一些代码:
NSDateFormatter *df = [[NSDateFormatter alloc] init];
[df setDateFormat:@"yyyy-MM-dd hh:mm:ss"];
NSDate *myDate = [df dateFromString:@"2010-03-14 15:00:00"];
Run Code Online (Sandbox Code Playgroud)
谢谢
Voi*_*ter 66
NSDateFormatter遵循Unicode标准的日期和时间模式.24小时制使用'H'表示小时:
NSDateFormatter *df = [[NSDateFormatter alloc] init];
[df setDateFormat:@"yyyy-MM-dd HH:mm:ss"];
NSDate *myDate = [df dateFromString:@"2010-03-14 15:00:00"];
Run Code Online (Sandbox Code Playgroud)
cro*_*oto 53
我有同样的问题,使用HH仅在某些设备上工作,如Roger也验证过.最后,这是对我有用的解决方案,我希望它适用于其他人.找到这个答案是困难的,没有论坛,它是苹果文档后的字面试验和错误.
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
NSLocale *enUSPOSIXLocale = [[NSLocale alloc] initWithLocaleIdentifier:@"en_US_POSIX"];
[dateFormatter setLocale:enUSPOSIXLocale];
NSString *dateFormat = @"dd/MM/yyyy HH:mm"; //MM for month, mm for minutes
[dateFormatter setDateFormat:dateFormat];
[dateFormatter setTimeZone:[NSTimeZone localTimeZone]];
date = [dateFormatter dateFromString:string];
Run Code Online (Sandbox Code Playgroud)
EvG*_*yin 11
我对Swift的解决方案:
let formatter = NSDateFormatter()
var defIdentifer = formatter.locale.localeIdentifier
if !defIdentifer.hasSuffix("_POSIX") {
defIdentifer = defIdentifer+"_POSIX"
let locale = NSLocale(localeIdentifier: defIdentifer)
formatter.locale = locale
}
formatter.dateFormat = "HH:mm"
Run Code Online (Sandbox Code Playgroud)
摘自Apple关于 NSDateFormatters 的技术问答
问:我正在使用 NSDateFormatter 解析 Internet 样式的日期,但对于某些地区的某些用户来说这会失败。我设置了一个特定的日期格式字符串;这不应该强制 NSDateFormatter 独立于用户的区域设置工作吗?
答:不可以。虽然设置日期格式字符串似乎对大多数用户都有效,但这并不是解决此问题的正确方法。在很多地方,格式字符串都会以意想不到的方式运行。
这就是我在 Swift 中的做法:
private let dateFormatter: NSDateFormatter = {
let dateFormatter = NSDateFormatter()
dateFormatter.dateFormat = "yyyy-MM-dd'T'HH:mm:ss.SSS'Z'"
dateFormatter.locale = NSLocale(localeIdentifier: "en_US_POSIX")
dateFormatter.timeZone = NSTimeZone.init(forSecondsFromGMT: 0)
return dateFormatter
}()
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
31675 次 |
最近记录: |