相关疑难解决方法(0)

如何将字符串日期转换为NSDate?

我想将"2014-07-15 06:55:14.198000 + 00:00"这个字符串日期转换为Swift中的NSDate.

string nsdate ios swift

194
推荐指数
7
解决办法
19万
查看次数

处理NSDateFormatter语言环境"feechur"的最佳方法是什么?

似乎NSDateFormatter有一个"功能"意外地咬你:如果你做一个简单的"固定"格式操作,如:

NSDateFormatter* fmt = [[NSDateFormatter alloc] init];
[fmt setDateFormat:@"yyyyMMddHHmmss"];
NSString* dateStr = [fmt stringFromDate:someDate];
[fmt release];
Run Code Online (Sandbox Code Playgroud)

然后它在美国和大多数区域设置工作正常UNTIL ...将手机设置为24小时区域的人将设置中的12/24小时开关设置为12.然后上面开始将"AM"或"PM"添加到结果字符串的结尾.

(参见,例如,NSDateFormatter,我做错了什么或者这是一个错误?)

(请参阅https://developer.apple.com/library/content/qa/qa1480/_index.html)

显然苹果公司宣称这是"不好" - 破碎如设计,他们不会解决它.

规避显然是为特定区域(通常是美国)设置日期格式化程序的区域设置,但这有点乱:

NSLocale *loc = [[NSLocale alloc] initWithLocaleIdentifier:@"en_US"];
[df setLocale: loc];
[loc release];
Run Code Online (Sandbox Code Playgroud)

在onsies-twosies中并没有太糟糕,但我正在处理大约十个不同的应用程序,而我看到的第一个应用程序有43个这种情况的实例.

因此,对于宏/重写类/任何最小化改变所有内容的努力的任何聪明的想法,而不使代码模糊?(我的第一直觉是使用在init方法中设置语言环境的版本来覆盖NSDateFormatter.需要更改两行 - alloc/init行和添加的导入.)

添加

这是我到目前为止所提出的 - 似乎适用于所有场景:

@implementation BNSDateFormatter

-(id)init {
static NSLocale* en_US_POSIX = nil;
NSDateFormatter* me = [super init];
if (en_US_POSIX == nil) {
    en_US_POSIX = [[NSLocale alloc] initWithLocaleIdentifier:@"en_US_POSIX"];
}
[me setLocale:en_US_POSIX];
return me;
}

@end …
Run Code Online (Sandbox Code Playgroud)

iphone locale objective-c nsdateformatter ios

164
推荐指数
3
解决办法
4万
查看次数

NSDateFormatter,我做错了什么或这是一个错误?

我正在尝试以某种格式打印出日期:

NSDate *today = [[NSDate alloc] init];
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
[dateFormatter setDateFormat:@"yyyyMMddHHmmss"];
NSString *dateStr = [dateFormatter stringFromDate:today];
Run Code Online (Sandbox Code Playgroud)

如果将iPhone设置为24小时,这样可以正常工作,如果另一方面用户已将其设置为24小时时间,然后返回到上午/下午(它可以正常工作,直到您切换此设置)然后它会附加AM/PM尽管我没有要求它:

20080927030337 PM
Run Code Online (Sandbox Code Playgroud)

我做错了什么或这是固件2.1的错误?

编辑1:使描述更清晰

编辑2解决方法:事实证明这是一个错误,修复它我将AM和PM字符设置为"":

[dateFormatter setAMSymbol:@""];
[dateFormatter setPMSymbol:@""];
Run Code Online (Sandbox Code Playgroud)

iphone objective-c nsdate nsdateformatter ios

38
推荐指数
4
解决办法
2万
查看次数

标签 统计

ios ×3

iphone ×2

nsdate ×2

nsdateformatter ×2

objective-c ×2

locale ×1

string ×1

swift ×1