项目报错信息:

Connot parse "1991-04-14",illegal instant due to time zone offset transition(Asia/Shanghai)

在网上查了一下说是由于夏令时问题引起了,那么什么是夏令时呢?

夏时制,夏时令(Daylight Saving Time:DST),又称“日光节约时制”和“夏令时间”,是一种为节约能源而人为规定地方时间的制度,在这一制度实行期间所采用的统一时间称为“夏令时间”。一般在天亮早的夏季人为将时间调快一小时,可以使人早起早睡,减少照明量,以充分利用光照资源,从而节约照明用电。各个采纳夏时制的国家具体规定不同。目前全世界有近110个国家每年要实行夏令时。我国1986年4月中央颁布了相关政策, 1992年起,夏令时暂停实行。
 
夏令时开始:每年从四月中旬第一个星期日的凌晨2时整(北京时间),将时钟拨快一小时,即将表针由2时拨至3时;
夏令时结束:直到九月中旬第一个星期日的凌晨2时整(北京夏令时),再将时钟拨回一小时,即将表针由2时拨至1时。
         
具体时段:【1986-05-04(第一年特殊化)至1986-09-14, 1987-04-12至1987-09-13, 1988-04-10至1988-09-11, 1989-04-16至1989-09-17, 1990-04-15至1990-09-16, 1991-04-14至1991-09-15】。
 
夏令时对编程的影响: 有一些日期转换的类(org.joda.time包下的类)一碰到夏令时开始日期(1986-05-04,1987-04-12 ,1988-04-10,1989-04-16,1990-04-15,1991-04-14)就会报错

import org.joda.time.LocalDate;
import org.joda.time.format.DateTimeFormat;
import org.joda.time.format.DateTimeFormatter;

public static Date getBirthdayByIdCardNo(String IDCardNo) {
Date birthday = null;
if (StringUtils.isNotBlank(IDCardNo)) {
int length = IDCardNo.length();
if (length == 15 || length == 18) {
String strBirthday = null;
if (length == 18) {
//7—14位出生年月日
strBirthday = IDCardNo.substring(6, 14);
} else {
//7-12位出生年月日,比如670401代表1967年4月1日
strBirthday = StringUtils.leftPad(IDCardNo.substring(6, 12), 8, "19");
}
//DateTimeFormatter formatter = DateTimeFormat.forPattern("yyyyMMdd");会报错
//birthday = LocalDate.parse(strBirthday, formatter).toDate();会报错

          //SimpleDateFormat df = new SimpleDateFormat("yyyyMMdd");//所有的日期转换都要经过Calendar类,所以是线程不安全的。

//date = df.parse("2008-08-08");

          birthday = DateUtils.parse(strBirthday, "yyyyMMdd");

}

        }
return birthday;
}
import java.util.Date;
import java.util.regex.Pattern; import org.joda.time.DateTime;
public class DateUtils { public static final Pattern DATE_PATTERN = Pattern.compile("^\\d{4}-\\d{1,2}-\\d{1,2}$"); public static Date parse(String time, String format) {
return DateTimeUtils.toDate(DateTimeUtils.parse(time, format));
}
} import java.util.Date; import org.apache.commons.lang3.StringUtils;
import org.joda.time.DateTime;
import org.joda.time.format.DateTimeFormat; public class DateTimeUtils { public static Date toDate(DateTime dateTime){
return dateTime == null ? null : dateTime.toDate();
} public static DateTime parse(String time, String format) {
if(StringUtils.isBlank(time)){
return null;
}
return DateTime.parse(time,
DateTimeFormat.forPattern(format));
} }



 
解决方案:
 在启动类*Applation.java 中加入
 System.setProperty("user.timezone", "Etc/GMT-8");
 
友情链接:https://my.oschina.net/u/3871554/blog/1859717(讲述为何使用joda 包而非SimpleDateFormat)
 
 
 

Illegal instant due to time zone offset transition (Asia/Shanghai)_夏令时问题的更多相关文章

  1. Cannot parse "1986-05-04": Illegal instant due to time zone offset transition (Asia/Shanghai)

    调查系统错误时,发现了一个很奇怪的现象,出生日期1986-05-04号的用户始终无法注册.发现后台使用使用jodatime的代码demo如下: public static DateTime parse ...

  2. 解决mysql设置时区时的错误Unknown or incorrect time zone: 'Asia/Shanghai'

    Mysql默认时区格式是'+8:00'的格式,这个时区可以在my.ini中[mysqld]节点下设置 default-time-zone = '+8:00' 默认这个设置是没有的 但是mysql不支持 ...

  3. JodaTime报时区异常错误

    在将爬下来的网页解析需要的字段批量入口的时候(逻辑类似下面): @Test public void test_001(){ String TIME = "1990-04-15"; ...

  4. obj-c编程10:Foundation库中类的使用(5)[时间对象]

    隔了好久才有了这新的一篇,还是无奈的时间啊!so这次我们就着重谈谈它喽. F库中有很多时间相关的类,比如NSDate,NSTimeInterval,NSTimeZone,NSDateComponent ...

  5. [git]用pelican搞一个自己的blog(已完成)

    pelican Pelican Static Site Generator, Powered by Python:Pelican是python语言写的静态网站生成器.因为我一直打算用github pa ...

  6. 《OD大数据实战》Hue环境搭建

    官网: http://archive.cloudera.com/cdh5/cdh/5/hue-3.7.0-cdh5.3.6/ 一.Hue环境搭建 1. 下载 http://archive.cloude ...

  7. 【转载】Hadoop可视化分析利器之Hue

    http://qindongliang.iteye.com/blog/2212619 先来看下hue的架构图:  (1)Hue是什么? Hue是一个可快速开发和调试Hadoop生态系统各种应用的一个基 ...

  8. Hue集成Hadoop和Hive

    一.环境准备 1.下载Hue:https://dl.dropboxusercontent.com/u/730827/hue/releases/3.12.0/hue-3.12.0.tgz 2.安装依赖 ...

  9. hadoop in hue的搭建(基于cdh版本)

    首先官网下载tar包 http://archive.cloudera.com/cdh5/cdh/5/hue-3.9.0-cdh5.5.4.tar.gz 在安装hue之前,还需要安装各种依赖包,首先要检 ...

随机推荐

  1. animation 动画 与 transition

    animation: name duration timing-function delay iteration-count direction; 值 描述 animation-name 规定需要绑定 ...

  2. 采用Socket实现UDP

    ------------恢复内容开始------------ 1.1采用Socket实现UDP1.1.1简介 Socket实现UDP的基本步骤如下: (1)创建一个Socket对象 Socket my ...

  3. git 的使用:

    git  的官方网址是: https://git-scm.com/downloads github 的官方网址: https://github.com/ git 的原理图: git 和 github ...

  4. windows RN 环境搭建(实测心得)

    首先安装官网的装好依赖   这里特别敲掉的是 jdk 必须要1.8的才行: 装了node 就不要 py了.   官网 其次安装 android studio 开发工具 把对应的都装好:     这里的 ...

  5. js的原型和原型链

    总结: 1.每一个函数都有一个prototype属性,默认指向object空对象(原型对象), 每一个原型对象都有一个constructor属性,指向函数对象. eg: Person函数:     P ...

  6. SpringBoot--使用redis实现分布式限流

    1.引入依赖 <!-- 默认就内嵌了Tomcat 容器,如需要更换容器也极其简单--> <dependency> <groupId>org.springframew ...

  7. org.hibernate.LazyInitializationException异常解决办法

    org.hibernate.LazyInitializationException异常failed to lazily initialize a collection...的解决方案使用hiberna ...

  8. 吐血推荐,想进BAT必看

    不必太纠结于当下,也不必太忧虑未来,人生没有无用的经历,当你经历过一些事情后,眼前的风景已经和从前不一样了.--村上春树 一.包含如下内容 ActiveMQ消息中间件面试专题 BAT80道面试题 BA ...

  9. django项目常见报错集

    1.mysqlclient 目前不支持高版本python3 django.core.exceptions.ImproperlyConfigured: mysqlclient 1.3.13 or new ...

  10. ICPC 2018 亚洲横滨赛 C Emergency Evacuation(暴力,贪心)

    ICPC 2018 亚洲横滨赛 C Emergency Evacuation 题目大意 你一个车厢和一些人,这些人都坐在座位上,求这些人全部出去的时间最小值 Solution 题目咋说就咋做 直接模拟 ...