解析GMT+N时区,返回日期类型
涉及到正则表达式,时区转换。
/**
*
* 按格式 yyyy-MM-dd HH:mm:ss 以指定GMT时区进行解析,返回对应的当前系统时区当地时间。
* @param dateString 格式 yyyy-MM-dd HH:mm:ss
* @param timeZoneGMT 格式GMT+8,GMT-7,GMT+09:00,GMT-06:00
* @return
* @throws ParseException
*/
public static Date parseGMTDate(String dateString, String timeZoneGMT) throws ParseException {
String timeZoneGMTRegex = "^GMT[-+](\\d{1,2})(:?(\\d\\d))?$";
if (timeZoneGMT.matches(timeZoneGMTRegex)) {
TimeZone timeZone = TimeZone.getTimeZone(timeZoneGMT);
return parseDate(dateString, "yyyy-MM-dd HH:mm:ss", timeZone,null);
}
throw new ParseException(String.format("input GMT time zone format ['%s'] error ",timeZoneGMT),0);
}
/**
* 按指定格式 <code>pattern</code> 和指定时区进行解析,返回对应的当前系统时区当地时间。
*
* @param date
* @param pattern 格式参考 {@link SimpleDateFormat}
* @param timeZone
* @return
* @throws ParseException
*/
public static Date parseDate(String date, String pattern, TimeZone timeZone,Locale locale) throws ParseException {
Objects.requireNonNull(date, "date");
Objects.requireNonNull(pattern, "pattern");
SimpleDateFormat format = getSimpleDateFormat(pattern, timeZone, locale);
return format.parse(date);
}
private static SimpleDateFormat getSimpleDateFormat(String pattern, TimeZone timeZone, Locale locale) {
if (timeZone == null) {
timeZone = TimeZone.getDefault();
}
// 每次实例化 SimpleDateFormat 需要解析 pattern,非常耗时,但其本身又是线程不安全的,因此借用 ThreadLocal
LRU<String, SimpleDateFormat> formatMap = formats.get();
if (formatMap == null) {
formatMap = new LRU<String, SimpleDateFormat>(128);
formats.set(formatMap);
}
String formatId = pattern + timeZone.getID();
SimpleDateFormat format = formatMap.get(formatId);
if (format == null) {
if(locale != null){
format = new SimpleDateFormat(pattern,locale);
}else{
format = new SimpleDateFormat(pattern);
}
if (!format.getTimeZone().equals(timeZone)) {
format.setTimeZone(timeZone);
}
formatMap.put(formatId, format);
}
return format;
}
解析GMT+N时区,返回日期类型的更多相关文章
- 解析MySQL中存储时间日期类型的选择问题
解析MySQL中存储时间日期类型的选择问题_Mysql_脚本之家 https://www.jb51.net/article/125715.htm 一般应用中,我们用timestamp,datetime ...
- springmvc 1.接受日期类型的参数 2.后台返回json串的格式处理(返回json串null值处理为"")
springmvc中的配置: <bean id="dateConvert" class="com.iomp.util.DateConvert"/> ...
- 解决ASP.NET MVC返回的JsonResult 中 日期类型数据格式问题,和返回的属性名称转为“驼峰命名法”和循环引用问题
DateTime类型数据格式问题 问题 在使用ASP.NET MVC 在写项目的时候发现,返回给前端的JSON数据,日期类型是 Date(121454578784541) 的格式,需要前端来转换一下才 ...
- 【规范建议】服务端接口返回字段类型与iOS端的解析
一.本文档的写作目的 App需要跟产品.UI.后台.服务器.测试打交道,app的产出是其他端人员产出的综合体现.与其他端人员沟通就像是开发写接口,也就是面向接口编程的思想. 本文档讲解针对的是服务端返 ...
- Java | 日期类型的绍介和操作
Date类 Date类在java.util.Date,Date类表示特定的瞬间,精确到毫秒.(毫秒是千分之一秒)毫秒可以对时间和日期进行计算,可以把日期转换为毫秒进行计算,计算完毕,再把毫秒转换为日期 ...
- java和数据库中日期类型的常见用法
(1)java中日期类型:Date.Timestamp(2)数据库中:Date.Timestamp(3)字符串和Date之间的格式化转换: SimpleDateFormat类方法: format ...
- SpringBoot对接收及返回Instant类型的处理(转)
一:处理post请求json中的Instant类型1.springboot中日期格式化配置: spring: jackson: date-format: yyyy-MM-dd HH:mm:ss tim ...
- Swift根据日期字符串返回日期是星期几
最近在做的一个IOS项目中需要根据日期得出日期代表的是星期几,日期以字符串的形式获得,于是该方法可以简单描述如下: /* * 根据日期格式字符串返回日期代表星期几 * 参数:dateTime,字符串类 ...
- Java 基础【09】 日期类型
java api中日期类型的继承关系 java.lang.Object --java.util.Date --java.sql.Date --java.sql.Time --java.sql.Time ...
随机推荐
- 巨蟒python全栈开发-第11阶段 ansible_project3
今日大纲: 1.用户创建 2.前端优化 3.用户编辑 4.用户删除 5.ansible api介绍 1.用户创建 新建一个user_create.html的页面 <form class=&quo ...
- UVa 679 【思维题】
UVA 679 紫书P148例题. 题目大意:小球从一棵所有叶子深度相同的二叉树的顶点开始向下落,树开始所有节点都为0.若小球落到节点为0的则往左落,否则向右落.并且小球会改变它经过的节点,0变1,1 ...
- DateFormat 日期格式化类(必须掌握)
package com.sxt.utils.date1; import java.util.Date; import java.text.DateFormat; import java.text.Si ...
- hihoCoder#1239 Fibonacci
#1239 : Fibonacci 时间限制:10000ms 单点时限:1000ms 内存限制:256MB 描述 Given a sequence {an}, how many non-empty s ...
- 容器安全拾遗 - Rootless Container初探
摘要: Docker和Kubernetes已经成为企业IT架构的基础设施,安全容器运行时越来越被关注.近期Docker 19.03中发布了一个重要的特性 “Rootless Container”,在提 ...
- @bzoj - 4381@ [POI2015] Odwiedziny
目录 @description@ @solution@ @accepted code@ @details@ @description@ 给定一棵 n 个点的树,树上每条边的长度都为 1 ,第 i 个点 ...
- 杭电多校第二场1012 L - Longest Subarray ce 线段树
这题是真的秀...我服了...线段树用好了,感觉什么都可以写... 题目大意:给你一个串,问满足以下条件的子串中最长的是多长:对于每个数字,要么在这个子串没出现过,要么出现次数超过k次. 我们对于每一 ...
- 手风琴jq实现
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- axis2 wsdl2java工具
wsdl2java工具使用方法描述: C:\Users\Administrator>wsdl2java -h Using AXIS2_HOME: E:\Apache_Projects\axis2 ...
- CodeForces 1243"Character Swap (Hard Version)"(multimap)
传送门 •前置知识-multimap的用法 $multimap$ 与 $map$ 的区别在于一个 $key$ 可以对应几个值: 对于 $map$ 而言,一个 $key$ 只能对应一个值,并且按照 $k ...