gpt4 book ai didi

objective-c - NSDateFormatter 不会使用区域设置解析日期?

转载 作者:行者123 更新时间:2023-12-03 17:37:27 26 4
gpt4 key购买 nike

我正在尝试使用用户的日期首选项来解析日期

[NSDateFormatter setDefaultFormatterBehavior:NSDateFormatterBehavior10_4];
NSDateFormatter *dateFormatter = [[[NSDateFormatter alloc] init] autorelease];
[dateFormatter setDateStyle:NSDateFormatterShortStyle];
NSDate *date = [ dateFormatter dateFromString:@"7/4/2008" ];
NSLog(@"string from date %@: %@ for locale %@", date, [dateFormatter stringFromDate:date], [[dateFormatter locale] localeIdentifier]);

当我将我的区域(在国际系统首选项中)设置为美国时,它会打印:

2008-08-14 20:20:31.117 Date Difference17226:10b string from date 2008-07-04 00:00:00 -0400: 7/4/08 for locale en_US

当我的区域是英国时,它会打印:

2008-08-14 20:19:23.441 Date Difference17199:10b string from date 2008-04-07 00:00:00 -0400: 07/04/2008 for locale en_GB

看起来 NSDateFormatter 对区域的变化不敏感。但请注意,日期的原始打印会随区域正确切换。

我需要做什么才能让 NSDateFormatter 尊重区域设置?

最佳答案

It looks like the NSDateFormatter is insensitive to the change of regions.

不,它在两个方向上使用区域设置。

您可以通过查看日期的描述(NSLog 格式中的第一个 %@)来了解格式化程序如何解释日期。
当区域为美国时,格式化程序将日期解释为 2008-07-04(7 月 4 日)
当区域为 GB 时,格式化程序将日期解释为 2008-04-07(4 月 7 日)

然后,您要求同一区域中的同一格式化程序显示该日期。
7 月 4 日(使用美国格式)为 07/04/2008 (MM/DD/YYYY)。
4 月 7 日(使用 GB 格式)为 07/04/2008 (DD/MM/YYYY)。

关于objective-c - NSDateFormatter 不会使用区域设置解析日期?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/261780/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com