涉及到正则表达式,时区转换。

/**

*

* 按格式 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时区,返回日期类型的更多相关文章

  1. 解析MySQL中存储时间日期类型的选择问题

    解析MySQL中存储时间日期类型的选择问题_Mysql_脚本之家 https://www.jb51.net/article/125715.htm 一般应用中,我们用timestamp,datetime ...

  2. springmvc 1.接受日期类型的参数 2.后台返回json串的格式处理(返回json串null值处理为"")

    springmvc中的配置: <bean id="dateConvert" class="com.iomp.util.DateConvert"/> ...

  3. 解决ASP.NET MVC返回的JsonResult 中 日期类型数据格式问题,和返回的属性名称转为“驼峰命名法”和循环引用问题

    DateTime类型数据格式问题 问题 在使用ASP.NET MVC 在写项目的时候发现,返回给前端的JSON数据,日期类型是 Date(121454578784541) 的格式,需要前端来转换一下才 ...

  4. 【规范建议】服务端接口返回字段类型与iOS端的解析

    一.本文档的写作目的 App需要跟产品.UI.后台.服务器.测试打交道,app的产出是其他端人员产出的综合体现.与其他端人员沟通就像是开发写接口,也就是面向接口编程的思想. 本文档讲解针对的是服务端返 ...

  5. Java | 日期类型的绍介和操作

    Date类 Date类在java.util.Date,Date类表示特定的瞬间,精确到毫秒.(毫秒是千分之一秒)毫秒可以对时间和日期进行计算,可以把日期转换为毫秒进行计算,计算完毕,再把毫秒转换为日期 ...

  6. java和数据库中日期类型的常见用法

    (1)java中日期类型:Date.Timestamp(2)数据库中:Date.Timestamp(3)字符串和Date之间的格式化转换:    SimpleDateFormat类方法: format ...

  7. SpringBoot对接收及返回Instant类型的处理(转)

    一:处理post请求json中的Instant类型1.springboot中日期格式化配置: spring: jackson: date-format: yyyy-MM-dd HH:mm:ss tim ...

  8. Swift根据日期字符串返回日期是星期几

    最近在做的一个IOS项目中需要根据日期得出日期代表的是星期几,日期以字符串的形式获得,于是该方法可以简单描述如下: /* * 根据日期格式字符串返回日期代表星期几 * 参数:dateTime,字符串类 ...

  9. Java 基础【09】 日期类型

    java api中日期类型的继承关系 java.lang.Object --java.util.Date --java.sql.Date --java.sql.Time --java.sql.Time ...

随机推荐

  1. 基于颜色的R2V软件快速矢量化

    跟同学一起做SRTP,矢量化,作图的工作点名让我去做,人家说,谁让你是学地理信息的呢?哎,什么时候地理信息不再被别人当成制图画图的,我们专业就有希望了. 话虽然这么说,但工作还是要去做. (进入正题) ...

  2. LeetCode73 Set Matrix Zeroes

    题目: Given a m x n matrix, if an element is 0, set its entire row and column to 0. Do it in place.(Me ...

  3. 05Redis入门指南笔记(持久化)

    Redis的强劲性能很大程度上是由于将所有数据都存储在了内存中,然而当Redis重启后,所有存储在内存中的数据就会丢失.在一些情况下,希望Redis能将数据从内存中以某种形式同步到硬盘中,使得重启后可 ...

  4. oracle函数 round(x[,y])

    [功能]返回四舍五入后的值 [参数]x,y,数字型表达式,如果y不为整数则截取y整数部分,如果y>0则四舍五入为y位小数,如果y小于0则四舍五入到小数点向左第y位. [返回]数字 [示例] se ...

  5. Bert源码阅读

    前言 对Google开源出来的bert代码,来阅读下.不纠结于代码组织形式,而只是梳理下其训练集的生成,训练的self-attention和multi-head的具体实现. 训练集的生成 主要实现在c ...

  6. Python--day61--ORM介绍及Django使用ORM创建表

    ORM: 使用django的ORM详细步骤:(pymysql操作数据库:) #1,自己动手创建数据库(create database 数据库名字;) #2,在Django项目中(setting.py文 ...

  7. Pytorch的LSTM的理解

    class torch.nn.LSTM(*args, **kwargs) 参数列表 input_size:x的特征维度 hidden_size:隐藏层的特征维度 num_layers:lstm隐层的层 ...

  8. H3C 最大跳数16导致网络尺度小

  9. ssh使用笔记

    在集群管理和配置中有很多命令要在各个节点中发送(特别是Master->Worker),大家都不希望发送每一个命令时都输入一次密码,因此常常先配置实现Master无密码登录到所有的Worker节点 ...

  10. LOGO的浮空显示-Verilog

    为了方便生成准确的mif数据,以实现特定的透明效果.使用Photoshop将网上下载的Logo修改颜色,保存大小为120*120像素,如图1所示. 图1 ps修改后的Logo 使用Pic2mif软件, ...