【问题标题】:NSDateFormatter: How to Shorten Formatted Date?NSDateFormatter:如何缩短格式化日期?
【发布时间】:2011-10-04 06:27:55
【问题描述】:

我正在使用NSDateFormatter 在 SQLite 表格单元格值中格式化我的日期。
我的单元格的类型是datetime,我输入的值是这样的:“01.11.2011”,“02.11.2012”(dd.MM.yyyy)

当我获取数据时,我正在使用这样的NSDateFormatter

NSDateFormatter *dateFormatter =  [[NSDateFormatter alloc] init];
[dateFormatter setDateFormat:@"dd.MM.yyyy"];
[dateFormatter setTimeZone:[NSTimeZone timeZoneWithAbbreviation:@"GMT"]];

而我的输出值是这样的:

2011-11-01 00:00:00 +0000

如何将此值缩短为仅日期值?喜欢2011-11-01?
还有更多,如何更改此值中的位置和分隔符,例如01.11.2011

编辑:我的错误,我没有说明我是如何得到这些值的。像这样:

NSDate *myDate = [dateFormatter dateFromString:[NSString stringWithUTF8String:(char *)sqlite3_column_text(compiledStatement, 7)]];

Edit-2:我设置了一个断点并检查了这个字符串的值,当我进入数据库时​​,它就像 01.11.2011。

【问题讨论】:

  • 你从哪里得到输出值?你还没有展示你是如何使用格式化程序的。
  • 你传递给 dateformatter 的刺痛
  • 我编辑了问题内容。
  • @confeng 这就是您从字符串中获取 NSDate 对象的方式。您可以使用相同的 dateFormatter 通过调用 [dateFormatter stringFromDate:myDate] 来获取格式化的日期字符串
  • @Nevin,没错,但我的问题是我想在这个日期之前订购和刻板印象值。我可以为此使用 stringFromDate 值吗?我很怀疑。

标签: iphone objective-c xcode nsdate nsdateformatter


【解决方案1】:

您的代码非常正确。不过,您没有展示如何从 dateFormatter 获得输出。格式化程序格式设置为:

[formatter setDateFormat:@"dd.mm.yyyy"];
NSString *formattedDate = [formatter stringFromDate:[NSDate date]];

这应该将 formattedDate 分配给

04.10.2011

【讨论】:

  • 问题中的输出在我看来就像直接记录 NSDate 对象时得到的一样。这不受格式化程序的影响,必须使用此答案中的stringFromDate 方法来获取格式化字符串。
  • 没错,这就是为什么我说@confeng 没有显示她/他如何从 dateFormatter 获取输出。
  • 这是一个支持性评论,而不是批评:)
猜你喜欢
  • 1970-01-01
  • 2014-11-13
  • 2012-08-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多