关于日期格式yyyy-MM-dd和YYYY-MM-dd
今天写代码的时候发现了一个比较有趣的现象,在之前并没有意识到。
代码如下:
public static List<String> getBetweenDateDatas(Date start, Date end) {List<String> durings = new ArrayList<String>();Calendar tempStart = Calendar.getInstance();tempStart.setTime(start);SimpleDateFormat dateFormat = new SimpleDateFormat("YYYY-MM-dd");Calendar tempEnd = Calendar.getInstance();tempEnd.setTime(end);while (!tempStart.after(tempEnd)) {String dateStr = dateFormat.format(tempStart.getTime());durings.add(dateStr);tempStart.add(Calendar.DAY_OF_YEAR, 1);}return durings;}
比如输入的start为'2017-12-26',end为'2018-01-05'。则会得到这样的结果:
[2017-12-26, 2017-12-27, 2017-12-28, 2017-12-29, 2017-12-30, 2018-12-31, 2018-01-01, 2018-01-02, 2018-01-03, 2018-01-04, 2018-01-05]
但事实上,如果不转化SimpleDateFormat的话,得到的日期是:
[Tue Dec 26 00:00:00 CST 2017, Wed Dec 27 00:00:00 CST 2017, Thu Dec 28 00:00:00 CST 2017, Fri Dec 29 00:00:00 CST 2017, Sat Dec 30 00:00:00 CST 2017, Sun Dec 31 00:00:00 CST 2017, Mon Jan 01 00:00:00 CST 2018, Tue Jan 02 00:00:00 CST 2018, Wed Jan 03 00:00:00 CST 2018, Thu Jan 04 00:00:00 CST 2018, Fri Jan 05 00:00:00 CST 2018]
最终的解决方法是,在某个时刻毫无预兆的突然想到了'yyyy-MM-DD',且经过验证发现,将
SimpleDateFormat dateFormat = new SimpleDateFormat("YYYY-MM-dd");
改为:
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
最终得到了正确的输出。
此后查阅文档及集大家之所成,发现了原因(虽然感觉似懂非懂,因为完全不会算week year):
“YYYY format” 是 “ISO week numbering system”
“yyyy format” 是 “Gregorian Calendar”
“YYYY specifies the week of the year (ISO) while yyyy specifies the calendar year (Gregorian)"
总之,正常情况下,如果希望按照日历格式得到每天的日期字符的话,使用'yyyy-MM-dd'没错的了……吧
关于日期格式yyyy-MM-dd和YYYY-MM-dd相关推荐
- JS 判断input输入框日期时间格式是否符合YY-MM-DD HH:MM:SS和是否符合实际日期规范方法以及SQL时间日期格式转化存储
JS 判断input输入框日期时间格式是否符合YY-MM-DD HH:MM:SS和是否符合实际日期规范方法以及SQL时间日期格式转化存储 先获取input文本框内输入值 <p>日 & ...
- Oralce中日期格式
http://www.blogjava.net/zJun/archive/2006/08/14/61808.html Oralce中的to_date()函数用于将字符串转换为日期对象,具体使用格式为: ...
- C#中用DateTime的ParseExact方法解析日期时间(excel中使用系统默认的日期格式)
最近做的项目中服务器是英文的系统,系统需要通过excel的单元格导入日期,excel中的日期格式是系统默认的日期格式,如下图所示 以上日期格式,会跟着操作系统设置的日期格式相同例如我的中文系统的日期格 ...
- 日期转化为时间戳,英文的日期转为日期格式
该文章介绍怎么将中文年月日的日期转为时间戳,英文格式的时间转为中文日期的yyyy-MM-dd格式,然后调用方法再转为时间戳 在项目开发中有用到所以记录下来,转化给日期格式之后转为时间戳 // 中文日期 ...
- oracle--day2(单值函数(字符函数,日期函数,转换函数,数字函数),日期格式(yyyy,mm等含义),表示一个日期数据的4种方式,多表查询(连接查询(等值连接,不等值连接,外连接,自连接))
第三章:单值函数 函数分为: 1.单值函数 1.字符函数 2.日期函数 3.转换函数 4.数字函数 ...
- 年月日格式判断-正则表达式 YYYY/MM/DD、YYYY/MM/DD| YY/MM/DD、 ^(^(\d{4}|\d{2})(\-|\/|\.)\d{1,2}\3\d{1,2}$)|(^\d{4}…
一.简单的日期判断(YYYY/MM/DD): ^\d{4}(\-|\/|\.)\d{1,2}\1\d{1,2}$ 二.演化的日期判断(YYYY/MM/DD| YY/MM/DD): ^(^(\d{4}| ...
- java date eee_java将 Date原始格式EEE MMM dd HH:mm:ss Z yyyy转成指定格式
java将 Date原始格式"EEE MMM dd HH:mm:ss Z yyyy"转成指定格式 //将 Date原始格式"EEE MMM dd HH:mm:ss Z y ...
- JavaScript 中如何将日期格式化为 DD/MM/YYY
在 JavaScript 中要将日期格式化为 dd/mm/yyyy .需要遵循以下步骤: 使用 getDate().getMonth() 和 getFullYear() 方法获取特定日期的日.月和年. ...
- mysql 日期格式转换mm/dd_如何将日期格式“dd/mm/yy”转换为“yy/mm/dd”以便插入mysql数据库?...
当我从格式为"dd/mm/yy"的文件中插入日期格式为"yy/mm/dd"的数据库表时,日期错误: 我得到的不是2019:04:11,而是2011:04:19. ...
- android输出日期格式,如何在Android中将“ yyyy-MM-dd'T'HH:mm:ss.SSSXXX”日期格式解析为简单格式?...
小编典典 如果使用的是Java,则可以SimpeDateFormat与模式一起使用: String date = "2018-01-09T11:11:02.0+03:00"; Si ...
最新文章
- kvm--virsh命令行下管理虚拟机
- ABAP 在程序中启动后台JOB
- my understanding for love
- 调整谷歌reCAPTCHA大小 How to resize the Google noCAPTCHA reCAPTCHA
- Java原生API操作XML
- POJ 1155 TELE【树形DP】
- 最新房天下登录接口(RSA)JS逆向分析
- 【编程语言之Python】之plt画图尺寸、去白边
- qtextedit 默认文案_Qt设置QTextEdit和QLabel的字体颜色 | 学步园
- ASP.NET中的回调技术(CallBack)
- oracle ora27072,ORA-27072: skgfdisp
- linux下搭建apache+mysql+php环境(LAMP)
- 让无代理设置参数的软件通过代理服务器联网
- java 找出重复的数字
- 表示自己从头开始的句子_从头-一切从头开始的句子
- 蔡盈芳:企业数字档案馆整体架构及其层次模型研究
- 简单了解XHR是什么
- Git安装【Windows环境安装配置】详细教程
- fcpx插件:Stupid Raisins Review Pop(37个流行评论标题插件)
- DayDayUp:计算机技术与软件专业技术资格证书之《系统集成项目管理工程师》证书考试历年真题及其解析之2017年/2018年
热门文章
- python写入excel文件保存在哪里_万字长文记录Python读写EXCEL文件常用方法大全
- Win10 8265ac 蓝牙丢失的修复[2019.8.13]
- 计算机网络知识之URL、IP、子网掩码、端口号
- uni-app引入全局css样式
- 安卓带步骤的手写签名(附源码)
- matlab中interp2的python实现(经matlab测试通过)
- android sina 微博表情功能的实现
- 航天中认软测/测试实习生
- 物联网编程语言_编程语言以学习物联网实施
- 网络游戏私服行业现状和反私服的措施