iphone - iOS : Date conversion results in wrong date

标签 iphone ios objective-c nsdate nsdateformatter

我以前用几种格式做过几次。无法理解在这里俯瞰的是什么!日期转换不会那么难! :) 但似乎太麻烦了。 我得到这样的字符串: 2013 年 8 月 9 日 06:44:01:950AM

我正在尝试使用此代码将其转换为日期:

[Date_Converter getDateFromString:date withFormat:@"MMM dd YYYY HH:mm:ss:SSSa"]

并且在DateConverter.m

+(NSDate *) getDateFromString:(NSString *) strDate
                   withFormat:(NSString *) format {

    NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
    [formatter setDateFormat:format];
    //[formatter setTimeZone:[NSTimeZone localTimeZone]];
    NSDate *dateFromStr = [formatter dateFromString:strDate];
    return dateFromStr;
}

从上面的方法得到的NSDate返回值是这样的! 2013-01-04 19:14:01 +0000

为输入日期 2013 年 8 月 9 日 06:44:01:950AM

这怎么可能?对于各种其他格式的日期,我已经多次使用相同的方法。请帮忙。我在这里忽略了什么?

更新 将格式更改为

[Date_Converter getDateFromString : date
       withFormat : @"MMM dd yyyy hh:mm:ss:SSSa"];

但它仍然返回 null。请帮忙。

最终的帮助 添加 [格式化程序 setLocale:[[NSLocale alloc] initWithLocaleIdentifier:@"en_US_POSIX"]]; 按照下面@MartinR 的建议进行最新转换!

最佳答案

您的日期格式有两个错误:

  • 年份的正确格式是yyyy,而不是YYYY
  • 12 小时制 AM/PM 时间的格式是 hh,而不是 HH

更新:此外,为避免对当前语言环境的依赖,添加

[formatter setLocale:[[NSLocale alloc] initWithLocaleIdentifier:@"en_US_POSIX"]];

如果您有使用英文月份名称/缩写的固定输入格式。

关于iphone - iOS : Date conversion results in wrong date,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18148236/

相关文章:

objective-c - 来自类 X 的 bool 值在从类 Y 的 View Controller 更改为类 Z 的 View ​​ Controller 之间不会持续存在

ios - 选项卡式 iOS 应用程序中的单个选项卡不断崩溃

ios - 如何创建标签文本 slider

iphone - 在ios的特定类中使用自动引用计数

iphone - 即使图像较小,如何使 UITableViewCell 的 ImageView 成为固定大小

iphone - iOS 6 - Facebook 共享程序失败并出现错误 "The proxied app is not already installed"

ios - HTTP GET 请求在 iOS 模拟器中有效,但在 iPhone 设备上无效

iphone - 确定 UIViewController 是否由于应用程序退出而关闭?

iphone - 在其他 View Controller 下面创建一个 View Controller

ios - 为一个 tableView 使用多个 UITableViewCells