- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
在我的应用程序中,我使用以下代码将字符串转换为日期,然后再将日期插入数据库。
但是对于英国的用户来说,这段代码失败了,他们将地区设置为英国,将时区设置为伦敦。
这适用于美国用户,因为他们的语言环境是 en_US。也就是说,此代码适用于 en_US 语言环境,但不适用于 en_GB 语言环境。
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc]init];
[dateFormatter setLocale:[NSLocale currentLocale]];
[dateFormatter setDateFormat:@"yyyy-MM-dd'T1'HH-mm-ss-SSS"];
[dateFormatter setTimeZone:[NSTimeZone timeZoneWithName:@"UTC"]]; //doing this as timestamp stored in server is based on UTC, hence I'm using UTC instead of systemTimeZone
date = [dateFormatter dateFromString:theDate];
传递的字符串是:2014-6-26T121-21-6-000
如果我如下设置语言环境,而不是为世界各地的所有用户设置 currentLocale:
[dateFormatter setLocale:[[NSLocale alloc] initWithLocaleIdentifier:@"en_US_POSIX"]];
然后代码就可以工作了,但我想知道这是否会导致将来出现任何问题?
为什么我们需要设置 locale 属性来转换日期?
为什么在我的情况下 currentLocale
失败,但 en_US
区域设置却没有,即使日期格式匹配正确?
最佳答案
每当您处理 ISO 8601 或 RFC 3339 日期(即与网络服务交换的日期和/或作为字符串存储在某些数据存储中的日期)时,请使用 en_US_POSIX
。参见 Technical Note 1480 .
或者可以使用 NSISO8601DateFormatter
而且您不必处理这种愚蠢的语言环境。例如
NSString *string = @"2014-06-26T12:21:06.000Z";
NSISO8601DateFormatter *formatter = [[NSISO8601DateFormatter alloc] init];
formatter.formatOptions = NSISO8601DateFormatWithInternetDateTime | NSISO8601DateFormatWithFractionalSeconds;
NSDate *date = [formatter dateFromString:string];
此外,ISO 8601 和 RFC 3339 日期时间字符串的标准表示,您通常会使用类似 2014-06-26T12:21:06.000Z
的格式,其中:
:
;.
;和Z
以明确指定时间字符串采用 GMT/UTC/Zulu 格式。关于ios - 什么时候为 NSDateFormatter 设置 NSLocale ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49946461/
我正在尝试使用以下代码获取用户选择的当前首选语言: NSString *language = [[NSLocale preferredLanguages] objectAtIndex:0]; 这是第一
我似乎一直在围绕这个问题兜圈子,但现在却无路可走。 我正在尝试强制我的应用程序的语言(瑞典语),如下所示。 @autoreleasepool { [[NSUserDefaults standa
我想在应用程序中添加两个按钮并执行一些操作。我想在 XIB 中切换两种语言按钮。假设有Button,1是英文,2是法文。我在应用程序中添加了一些数据。如果我选择英语按钮,则数据将以英语显示,而法语按钮
以下代码提供了一个包含所有语言的数组, 我还是希望过滤掉诸如“en-GB”,“zh-Hant”之类的变体,并且每个语言只有一个2个字符的数组。 苹果这样做的优雅方式是什么? NSLog(@"[NSL
我有一根绳子,根据某些情况,中间有不同的部分。 示例:您失去了 255 积分。 点值“255”是变化的部分,我想将不变的部分保存在我的字符串文件中。但是我不想在我的字符串文件中有两个条目,例如。 "s
[NSLocale currentLocale]可能会返回 'en_US@calendar=japanese'} 问题:我可以说 NSLocale 不附加 calendar=japanese到语言环境
我正在尝试使用以下代码获取设备当前选择的语言代码。 NSString *language = [[NSLocale preferredLanguages] objectAtIndex:0]; 此行在安
我希望少数 iTunes 商店使用我的应用程序。我读了NSLocale Class Reference他们正在谈论“当前用户”。那么,谁是“当前用户”?是下载过app的用户吗? 1) 是否有可能根据当
我正在使用闹钟应用程序。我正在使用 NSLocal 通知创建警报。警报工作正常。我的问题是我需要不间断地重复循环 Alatm。 我的代码: UILocalNotification *localNot
我正在使用 Swift 3 开发 iOS。 我得到了国家名称字符串,如“日本”、“英国”、“西类牙”等。 我想知道从国家名称生成 NSLocale 实例的最佳方法是什么? 我只找到了localized
我已经找到了很多方法来解决这个问题,但没有有效的解决方案。这是我尝试过但没有奏效的方法。 (1) 只需调用primaryLanguage() UITextInputMode().primaryLang
关闭。这个问题需要debugging details .它目前不接受答案。 编辑问题以包含 desired behavior, a specific problem or error, and th
所以在我的应用程序中,我试图获取设备当前设置的语言及其首字母缩写词。所以我这样做: NSString *fullLanguage = [[NSLocale currentLocale] display
我使用以下代码作为代码和国家/地区名称,但它返回 null。 NSLocale *locale = [NSLocale currentLocale]; NSString *countryCode =
有没有办法像在设置应用程序中一样在 iphone 上获取所有可用语言? 在 NSLocales 类引用中找不到方法。 谢谢! alt text http://dl.getdropbox.com/u/8
我使用此代码获取 iPhone 属于哪个国家/地区: NSLocale *locale = [NSLocale currentLocale]; NSString *countryCode = [loc
我想获取当前选择的 iPhone 语言。如果使用“NSLocale”,它总是返回相同的语言。看来这不是您在 iPhone 设置中选择的。 NSLocale * locale = [NSLocale c
有没有更好的方法来编码而不使用魔术“en”,“es”字符串? let pre = Locale.preferredLanguages[0] if pre == "en" .... el
我试图让 Xcode 返回各种格式的 iOS 语言名称列表。在下面的代码中,我创建了一个字典,返回可以从 NSLocale 返回的各种字符串。 langInUsersLang - 返回用户语言的语言名
我想获得一份国家列表,其中包含相应的语言和货币。 首先我创建了我的类来存储我需要的信息: class Country: NSObject { var localeID:String?
我是一名优秀的程序员,十分优秀!