【问题标题】:Converting user custom date format string to nsdate?将用户自定义日期格式字符串转换为 nsdate?
【发布时间】:2016-11-03 19:38:14
【问题描述】:

假设用户在系统偏好设置的语言和地区部分设置了自定义日期格式。截图 - http://imgur.com/gallery/dMy8u

我在 NSString 表示 (eg - @"201603/11") 中有这个日期,我想将其转换为我自己的日期格式,即“MM/dd/yyyy”。我正在使用以下代码:

NSDateFormatter *formatter = [NSDateFormatter new];
formatter.dateFormat = [NSDateFormatter dateFormatFromTemplate:@"MM/dd/yyyy"
                                                       options:0
                                                        locale:[NSLocale systemLocale]];
[formatter setDateStyle:NSDateFormatterShortStyle];
NSDate *localDate = [formatter dateFromString:@"201603/11"];

但是 localDate 总是返回 nil。

简而言之,我的 NSString 表示是 201603/11(由用户设置的格式),我想用 NSDate 表示。

【问题讨论】:

  • 您的日期格式化程序错误。 short 样式是将日期简写为字符串。
  • @TejaNandamuri,是的,问题出在我的日期格式化程序上。我已经删除了 dateStyle 属性,但是 localDate 仍然返回 nil。有什么线索吗?
  • [格式化程序 setDateFormat:@"yyyydd/MM"];
  • "yyyydd/MM" 是用户在首选项中设置的内容(请参见问题中的屏幕截图)。我有一个用户设置的格式的日期字符串表示。我想转换为“MM/dd/yyyy”中的 NSDate 表示。
  • 它会给你一个日期,以后你可以把它转换成你需要的格式。首先您需要设置格式化程序以匹配用户设置字符串的格式。

标签: objective-c cocoa nsdateformatter


【解决方案1】:
// User Date format
NSDateFormatter *userFormatter = [NSDateFormatter new];
[userFormatter setDateFormat: @"yyyyMM/dd"];

NSDate *localDate = [userFormatter dateFromString:@"201610/31"];

NSLog(@"%@",localDate); //You will get, Year: 2016, Month:10, Day: 31

// The date format you want
NSDateFormatter *myFormatter = [NSDateFormatter new];
[myFormatter setDateFormat: @"MM/dd/yyyy"];

// Get date string from your local date object
NSString *myDateString = [myFormatter stringFromDate:localDate];
NSLog(@"%@",myDateString); //You will get a string, 10/31/2016

【讨论】:

  • 感谢您的回答。但是您在第二行中对日期格式进行了硬编码。用户可以在 OS X 的系统偏好设置中设置任何日期格式。然后呢?
猜你喜欢
  • 2021-03-21
  • 1970-01-01
  • 1970-01-01
  • 2017-02-23
  • 1970-01-01
  • 1970-01-01
  • 2014-03-25
  • 1970-01-01
  • 2023-02-16
相关资源
最近更新 更多