更改日期格式时获取错误日期
Posted
技术标签:
【中文标题】更改日期格式时获取错误日期【英文标题】:Getting wrong date on changing date format 【发布时间】:2015-01-21 08:59:05 【问题描述】:我在更改日期格式时弄错了日期,我正在使用以下代码
NSDateFormatter * formatter = [[NSDateFormatter alloc] init];
[formatter setDateFormat:@"MMM dd, YYYY"];
NSDate * theDate = [NSDate dateWithTimeIntervalSince1970:1419929948.7490001];
NSString * dateStr = [formatter stringFromDate:theDate];
输出 -
theDate is : 2014-12-30 08:59:08 +0000
dateStr is : Dec 30, 2015
谢谢
【问题讨论】:
【参考方案1】:您想使用yyyy
而不是YYYY
。小的y
是日历年,而大写的Y
是“一年中的一周”中的年份。
下面是the specification的解释。
F.4 一年中的一周
对于公历,为年份字段计算的值范围为 1 到 53(对于其他日历,它们可能具有不同的范围)。一年的第 1 周是从该年起至少包含指定最小天数的第一周。一年的第 1 周和下一年的第 1 周之间的周按从 2 到 52 或 53 的顺序编号(如果需要)。例如,1998 年 1 月 1 日是星期四。如果一周的第一天是 MONDAY,一周的最少天数是 4(这些值反映了 ISO 8601 和许多国家标准),那么 1998 年的第 1 周从 1997 年 12 月 29 日开始,到 1 月 4 日结束, 1998. 但是,如果一周的第一天是星期日,则 1998 年的第 1 周从 1998 年 1 月 4 日开始,到 1998 年 1 月 10 日结束。1998 年的前三天是 1997 年第 53 周的一部分。
【讨论】:
【参考方案2】:更改以下行代码。
[formatter setDateFormat:@"MMM dd, yyyy"];
输出是:
【讨论】:
【参考方案3】:使用下面一行
[格式化程序 setDateFormat:@"MMM dd, yyyy"];
【讨论】:
【参考方案4】:按类别分类
+ (NSString *)dateStampFromDate:(NSDate *)date
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
[dateFormatter setDateFormat:@"MMM dd, yyyy"];
NSString *timeStamp = [dateFormatter stringFromDate:date];
return timeStamp;
【讨论】:
以上是关于更改日期格式时获取错误日期的主要内容,如果未能解决你的问题,请参考以下文章
在运行时更改系统日期格式时更新 DatePicker 中的日期格式
如何更改 Oracle BI Publisher 中的日期格式?