日期的格式,你用得对吗?

在 iOS 开发中,我碰到了奇怪的问题。

[dateFormatter stringFromDate:aDate];

dateFormatter 是一个 NSDateFormatter 对象。

aDate 是一个 NSDate 对象,它的值为 2015-12-30 00:00。

这段代码是把这个 NSDate 转化为 NSString。

我获得的结果是让人吃惊的:“2016-12-30 00:00” !!!

再次实验,这次 NSDate 对象的值改为 2017-12-30 00:00。

执行结果为:“2017-12-30 00:00”。

看到这里我就抓狂了,难道 Apple 的代码会有如此明显的错误?

经过一段测试以及网上搜索,终于找到了原因。

原来是 NSDateFormatter 对象的格式设置出现了错误。

我使用的是 “YYYY-MM-dd”。改为 “yyyy-MM-dd”。问题解决!!!

那么 YYYY 和 yyyy 区别是 ?yyyy 是标准的年,而 YYYY 是 ISO year-week calendar 的年。

参考链接:

http://stackoverflow.com/questions/15133549/difference-between-yyyy-and-yyyy-in-nsdateformatter

http://stackoverflow.com/questions/12423179/nsdateformatter-show-wrong-year

时间: 2024-10-04 13:55:33

日期的格式,你用得对吗?的相关文章

JSONArray.fromObject()注入处理日期Date格式

package jsonDateProcess; import java.sql.Date; import java.text.SimpleDateFormat; import java.util.Locale; import net.sf.json.JsonConfig; import net.sf.json.processors.JsonValueProcessor; /** * * @description: 用于JSONArray.fromObject()的注入处理日期Date类 (1)

Sql日期时间格式转换

Sql日期时间格式转换 sql server2000中使用convert来取得datetime数据类型样式(全) 日期数据格式的处理,两个示例: CONVERT(varchar(16), 时间一, 20) 结果:2007-02-01 08:02/*时间一般为getdate()函数或数据表里的字段*/ CONVERT(varchar(10), 时间一, 23) 结果:2007-02-01 /*varchar(10)表示日期输出的格式,如果不够长会发生截取*/ 语句及查询结果:Select CONV

日期字符串格式化成日期/日期格式化成指定格式字符串

日期字符串格式化成日期 String str="201403060819"; SimpleDateFormat fo = new SimpleDateFormat("yyyyMMddHHmm");//yyyyMMddHHmm是要转化成日期的字符串的格式 Date date = new Date(); try { date = fo.parse(str); } catch (ParseException e) { e.printStackTrace(); } 将上述日

Java日期的格式String类型GMT,GST换算成日期Date种类

请尊重他人的劳动成果.转载请注明出处:Java日期格式化之将String类型的GMT,GST日期转换成Date类型 http://blog.csdn.net/fengyuzhengfan/article/details/40164721 在实际开发过程中常常会须要将Date类型的数据封装成XML或Json格式在网络上进行传输,另外在将Date类型的数据存到Sqlite数据库中后再取出来的时候仅仅能获取String类型的日期了,这是由于SQLite是无类型的.这样不得不面对将String 类型的日

c#代码01--控制台的简单输入与输出及日期的格式输出

/* 使用ReadLine()完成控制台的输入输出内容 */ using System; namespace Test { class Test1 { static void Main(string[] args){ Console.Write("请输入:");//输出 请输入 且不换行 string read = Console.ReadLine();//将输入内容赋值到变量read Console.Write("您输入的内容为:");//控制台输出 您输入的内容

IOS --- 日期时间格式 转换

1.如何如何将一个字符串如" 20110826134106"装化为任意的日期时间格式,下面列举两种类型: NSString* string [email protected]"20110826134106"; NSDateFormatter*inputFormatter = [[[NSDateFormatter alloc] init]autorelease]; [inputFormattersetLocale:[[[NSLocale alloc] initWith

DEDE日期时间格式大全

打造最全的CMS类教程聚合! 日期时间格式 (利用strftime()函数格式化时间) 首页: ([field:pubdate function='strftime("%m-%d",@me)'/])==(5-15) ([field:pubdate function='strftime("%b %d, %Y",@me)'/])==(May 15, 2008) 列表页: [field:pubdate function="GetDateTimeMK(@me)&q

一起Polyfill系列:让Date识别ISO 8601日期时间格式

一.什么是ISO 8601日期时间格式 ISO 8601是国际标准化组织制定的日期时间表示规范,全称是<数据存储和交换形式·信息交换·日期和时间的表示方法>. 示例: 1. 2014-12-12T00:00:00.000Z 2. 2014-12-12T00:00:00.000+08 3. 2014-12-12T00:00:00.000+0800 4. 2014-12-12T00:00:00.000+08:00 5. 2004-W17-3 6. 0001-165 详细说明请参考度娘:http:/

JS获取日期yy-mm-dd格式

方法一: ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 var myDate=new Date(); var month = myDate.getMonth() + 1; var Day = myDate.getDate(); var today = ""; if(month<10){ if(Day<10){ today = myDate.getFullYear() + "-0" + month + &qu

apache log 按日期记录 格式 &lt;GOOD&gt;-- (转)

在apache的配置文件中找到ErrorLog logs/error_logCustomLog logs/access_log common Linux系统配置方法: 将其改为ErrorLog “| /usr/local/apache/bin/rotatelogs /home/logs/www/%Y_%m_%d_error_log 86400 480″CustomLog “| /usr/local/apache/bin/rotatelogs /home/logs/www/%Y_%m_%d_acc