【问题标题】:iOS Objective C: Date format returns niliOS 目标 C:日期格式返回 nil
【发布时间】:2016-12-06 07:43:08
【问题描述】:

在我的iOS application(Objective C) 中,我在数据库中添加日期(2016 年 11 月 29 日),格式如下:

2016-11-29 04:08:00 PM

在显示过程中,我想以以下格式显示:

11/29/2016 04:08:00 PM

为此,我添加了格式器,例如

NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
[dateFormatter setDateFormat:@"yyyy-MM-dd hh:mm:ss a"];
NSDate *date1  = [dateFormatter dateFromString: StartDateTime];
//here StartDateTime = 2016-11-29 04:08:00 PM

// Convert to new Date Format with /
[dateFormatter setDateFormat:@"MM/dd/yyyy hh:mm:ss a"];
NSString *newDate = [dateFormatter stringFromDate:date1];

但是这里newDate 返回nil

如何更改日期格式?请给我建议。

谢谢。

【问题讨论】:

  • 12 小时格式为hh
  • @vadian 好的,我正在改变它。
  • @vadian 仍然返回 nil
  • 检查date1是否不是nil,我认为date1本身就是nil。
  • @User_1191 我只是运行你的代码,它对我来说工作正常。你能打印出StartDateTime 字符串吗?

标签: ios objective-c nsdate nsdateformatter


【解决方案1】:

我已经对您的代码进行了以下更改:

NSString *StartDateTime = @"2016-11-29 04:08:00 PM";
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
[dateFormatter setDateFormat:@"yyyy-MM-dd hh:mm:ss a"];
NSDate *date1  = [dateFormatter dateFromString: StartDateTime];
//here StartDateTime = 2016-11-29 04:08:00 PM

// Convert to new Date Format with /
NSDateFormatter *dateFormatter1 = [[NSDateFormatter alloc] init];
[dateFormatter1 setDateFormat:@"MM/dd/yyyy hh:mm:ss a"];
NSString *newDate = [dateFormatter1 stringFromDate:date1];
NSLog(@"%@",newDate);

在您的代码中,我添加了一个新对象NSDateFormatter(例如上面的dateFormatter1),具有新的分配和新的日期格式。
您将通过这种方式得到答案。
确保每次您想更改 DateTime 格式 时都必须创建NSDateFormatter新实例

即使在尝试了这个选项之后,如果您没有得到想要的结果,那么请尝试在设备中运行代码,而不是在模拟器中。因为模拟器可能不会一直返回准确的结果,尤其是日期和时间

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-07-05
    • 1970-01-01
    • 2021-05-05
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多