NSdateFormatter中YYYY与yyyy出现的事件错误问题--爬坑

  昨天正值周末,但是公司却突然告诉我线上版本,无法请求数据。我试了一下,还真是!弹窗报的Token Overtime!这就奇了怪了,猜想是时间不对,打印了一下事件,发现竟然是2016年12月27号。(满头黑线)我就不信了,这好好的时间怎么会错了呢,于是乎就

1  NSDate *date = [[NSDate alloc]init];
2     NSLog(@"%@",date);

  输出结果是对的,2015年12月27日。那就是NSDateFormatter的错了,又试了下

1     NSDate *date = [[NSDate alloc]init];
2     NSLog(@"%@",date);
3     NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
4     [formatter setDateFormat:@"YYYYMMdd"];
5     NSString *dateStr = [formatter stringFromDate:date];
6     NSLog(@"%@",dateStr);

  呵呵哒!!输出结果是2016年12月27号,我真是醉了呀,这都能错。在谷歌上找了一下,还真有人遇到过,原来是事件格式[formatter setDateFormat:@"YYYYMMdd"];中用的是YYYY,而大Y表示的按周计算年12月27刚好是2015年的最后一个周末,而按美国来算,周末是一周的第一天,所以按@"YYYYMMdd"formatter之后就变成了16年。

  把事件格改为[formatter setDateFormat:@"yyyyMMdd"];

  一切OK;。

  到处都是坑,还是要注意代码规范,细心!

时间: 2024-10-06 00:39:06

NSdateFormatter中YYYY与yyyy出现的事件错误问题--爬坑的相关文章

NSDateFormatter 'YYYY' 和 'yyyy' 的区别

今天刷微博的时候看到这个: 立马就想到了BK项目今天feedback回来的bug,运行了大半年好好的都没有啥问题,今天突然间黑屏了,debug后才发现,NSDateFormatter 的时候时间变成2015年了,擦,今天还是2014年啊亲!所以导致create preform的时候出现了问题. Google了之后才发现是在格式化的时候由YYYY导致引起的,改回yyyy就好了.具体区别: 详情还是看StackOverflow上的回答吧:http://stackoverflow.com/questi

在rdlc 中 显示成 yyyy年MM月dd日

在rdlc 中  显示成  yyyy年MM月dd日, 采用: =First(Format(Fields!添加时间.Value,"yyyy年MM月dd日")  )

jQuery中的live绑定多个事件整理

在1.4.0之前(不包含1.4.0)无法使用多个绑定的,单个示例为: $('.clickme').live('click', function() { // Live handler called. }); 1.4.0-1.4.2开始支持了,实例如下: $('.hoverme').live('mouseover mouseout', function(event) { if (event.type == 'mouseover') { // do something on mouseover }

view xml 中的 button 调用web客户端事件

最近写一个模块 需要 在客户端干点事. 按常规的方法, 应该是写个 客户端模块. 在 客户端 init, start, render 去渲染个按钮出来干事.暂时还不太理解WEB模块如何很好地同服务器端通讯. 所以, 还是使用传统的OE server 模块来干这事. OE 提供 ir.actions.client (客户端事件) 来让服务端与 客户端进行事件交互. 所以, 只需要在 view xml 中. 添加个 button 并调用服务端事件, 然后 服务端返回一个 ir.actions.cli

jQuery中多个元素的Hover事件

1.需求简介 2.示例研究 3.解决方案 1.需求简介 jQuery的hover事件只是针对单个HTML元素,例如: $('#login').hover(fun2, fun2); 当鼠标进入#login元素时调用fun1函数,离开时则调用fun2函数,这种API已能够满足绝大部分需求. 不过,有些时候我们希望当鼠标进入两个或多个元素“组合的区域”时触发fun1,离开他们时触发fun2,而在这些元素间移动鼠标并不触发任何事件.例如两个元素紧挨着的HTML元素,如下图: 当鼠标进入二者的“组合区”域

在MFC中增加一个时间计时器消息事件

在MFC中增加一个时间计时器消息事件 利用this->SetTimer(1,1000,NULL);开启计时器 添加响应事件 void Csqllink1Dlg::OnTimer(UINT_PTR nIDEvent) { CTime tm; tm=CTime::GetCurrentTime(); CWnd* pWnd = (CWnd*)GetDlgItem(IDC_STATIC);switch(nIDEvent){ case 1: //MessageBox(_T("test"));

DataGridView中内置控件常用事件使用心得

checkbox,button,imagebutton使用dataGridView1_CellContentClick private void dataGridView1_CellContentClick(object sender, DataGridViewCellEventArgs e) { tb.Text+=string.Format("\r\n{0},Row:{1},Column:{2}","单元格内容单击!",e.RowIndex,e.ColumnInd

listView中adapter有不同的click事件的简单写法

在android中,listview一般都是通过一个adapter来绑定数据,一般的item的点击事件都会指向同一个目标(intent),只是所带的参数不同而已,但有的时候事与愿违,每个item的目标(intent)是不同的,此时我们需要一点技巧来处理这种情况...我的做法是每个item对应的entity添加一个listener ,来监听自己的事件..上代码: Listitem的定义[包含了一个onClickListener] public static class ListItem{ publ

JavaScript中,有三种常用的绑定事件的方法

要想让 JavaScript 对用户的操作作出响应,首先要对 DOM 元素绑定事件处理函数.所谓事件处理函数,就是处理用户操作的函数,不同的操作对应不同的名称. 在JavaScript中,有三种常用的绑定事件的方法: 在DOM元素中直接绑定: 在JavaScript代码中绑定: 绑定事件监听函数. 一. 在DOM元素中直接绑定 这里的DOM元素,可以理解为HTML标签.JavaScript支持在标签中直接绑定事件,语法为:    onXXX="JavaScript Code" 其中: