【问题标题】:Get the user's date format? (DMY, MDY, YMD)获取用户的日期格式? (DMY, MDY, YMD)
【发布时间】:2013-04-18 18:56:15
【问题描述】:

我正在创建一个表单,用户可以在其中使用 3 个 UITextFields 输入他们的生日:1 个代表月份,1 个代表天,1 个代表年。我想根据用户的日期格式来安排它们。
即:美国用户为 [ MONTH ] [ DAY ] [ YEAR ],欧洲用户为 [ DAY ] [ MONTH ] [ YEAR ] 等等。
各国日期格式图:http://en.wikipedia.org/wiki/Date_format_by_country#Map

获取该格式的最简单方法是什么?

现在我正在设置日期 2000 年 10 月 20 日并解析字符串。

NSCalendar *calendar = [NSCalendar currentCalendar];
NSDateComponents *components = [[NSDateComponents alloc] init];
[components setDay:20];
[components setMonth:10];
[components setYear:2000];
NSDate *date = [calendar dateFromComponents:components];

NSLog(@"%@", [NSDateFormatter localizedStringFromDate:date dateStyle:NSDateFormatterShortStyle timeStyle:NSDateFormatterNoStyle]);

但我不认为这是正确的做法,因为我已经有太多不同的格式:

美国:2000 年 10 月 20 日
法国:20/10/00
日本:2000/10/20
瑞典:2000-10-20

【问题讨论】:

  • 为什么不为用户提供一个UIDatePicker。这会更容易。
  • 这是产品要求。

标签: ios localization nsdate nsdateformatter


【解决方案1】:

您可以使用NSDateFormatter dateFormatFromTemplate:options:locale:

NSString *base = @"MM/dd/yyyy";
NSLocale *locale = [NSLocale currentLocale];
NSString *format = [NSDateFormatter dateFormatFromTemplate:base options:0 locale:locale];

format 的值将根据区域设置以正确的格式进行调整。现在的诀窍是扫描format 以查看您找到Mdy 的顺序。

【讨论】:

  • BUt 如何找到 mm,dd,yy 的顺序?
  • @user1673099 如果您有无法找到答案的问题,请发布您自己的问题,以便得到适当的关注。
【解决方案2】:

您可以尝试设置 dateFormatter 的 dateStyle。

NSDateFormatter  *dateFormatter = [[NSDateFormatter alloc]init];
//Based on users locale it would automatically change the display format
[dateFormatter setDateStyle:NSDateFormatterShortStyle];

NSString *dateString = [dateFormatter stringFromDate:date];

【讨论】:

  • 这并没有给我字段的顺序。
  • @LG01 AFAIK shortStyle 是需要根据区域设置显示日期的方式。你能解释一下为什么你不认为这很好吗?
  • 我想知道我应该根据用户的区域设置放置 3 个 UITextFields(1 天,1 月,1 年)的顺序。
  • @LG01 如果您提供 textField 来输入日期,您需要进行大量验证。如果您可以为此提供标准的 DatePicker 会更好。它将为您省去麻烦。
  • 我知道,但这是产品要求,所以我会尝试找到一个优雅的解决方案,并在需要时回退到日期选择器
猜你喜欢
  • 2016-03-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-07-12
相关资源
最近更新 更多