java获取中国时间代码(适用全球任意机器)
这个问题出自我写的代码需要运行在服务器上。本来的代码是这样写的:
import java.text.*;
import java.util.*;public final class NowDateTime
{public static final String get(){ Calendar cal = Calendar.getInstance(); SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); String cdate = df.format(cal.getTime()); return cdate; }public static void main(String[] args){System.out.println(get());}
}
乍看之下没有问题,确实,在我自己的电脑上获取的确实是当前的时间,本人在中国,要的也是中国时间,这一点在这篇文章中很重要。
但是奇怪的,明明格式中写了“HH”,也就是要求24小时制的时间,可是每一次把程序上传到服务器之后,运行的到的程序都是12小时制的,奇了怪了。由于服务器是ubuntu的,开始的时候,我以为是ubuntu的jvm和windows的jvm对相同的代码有不同的行为,虽然java本身以跨平台为特色,但是有那么一两个bug也是可以接受的嘛~~
结果有一天……我仔细看了一下java的文档,虽然文档没有直接说明我的困惑,但是一个方法却让我发现了端倪,那是DateFormat.setTimeZone方法。是的!是时区,服务器再美国,所以在服务器上获取的时间,是美国时间相差12个小时。虽然以前就知道,但是没想到真的如此接近,只相差几分钟,这几分钟被习以为常地用误差解释了。实际上,阴差阳错的是,我次测试都是在下午,中国时间>12,美国时间<12,就造成了一个24小时制,一个是12小时制的假象,所以根本没有注意到时区的问题。知道什么问题之后我改写了代码,明确说明要中国的时区——"Asia/Chongqing"(即“亚洲/重庆”)或"Asia/shanghai"。
所以更改之后的代码如下:
import java.text.*;
import java.util.*;// 获取当前日期时间的静态方法
public final class NowDateTime
{public static final String get(){ Calendar cal = Calendar.getInstance();// 设置格式化的SimpleDateFormat对象,指定中国语言环境SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss", Locale.CHINA);// 创建时区(TimeZone)对象,设置时区为“亚洲/重庆"TimeZone TZ = TimeZone.getTimeZone("Asia/Chongqing");// 将SimpleDateFormat强制转换为DateFormatDateFormat df = null;try{df = (DateFormat)sdf;}catch(Exception E){E.printStackTrace();}// 为DateFormat对象设置时区df.setTimeZone(TZ);// 获取时间表达式String cdate = df.format(cal.getTime()); return cdate; }public static void main(String[] args){System.out.println(get());}
}
这样在任何国家和地区,任何支持java SE的机器上,都能直接拿到中国时间了(如果java跨平台特性真的是完善的话)。
java获取中国时间代码(适用全球任意机器)相关推荐
- java获取当前时间代码(适合于是springboot+vue+java)
java获取当前时间代码(适合于是springboot+vue+java) /*** 获取当前的的动态时间格式*/Calendar calendar = Calendar.getInstance(); ...
- java获取当前日期时间代码
1.获取当前时间,和某个时间进行比较.此时主要拿long型的时间值. 方法如下: 要使用 java.util.Date .获取当前时间的代码如下 代码如下 Date date = new Date ...
- java获取中国城市代码 中国城市ID(天气预报可用哦)
package org.com.Weather.weather;import java.io.BufferedReader; import java.io.IOException; import ja ...
- java获取中国城市代码 中国城市ID
package org.com.Weather.weather; import java.io.BufferedReader; import java.io.IOException; import j ...
- java获取中国城市代码 中国城市ID
package org.com.Weather.weather; import java.io.BufferedReader; import java.io.IOException; import j ...
- 如何使用Java获取当前日期/时间
用Java获取当前日期/时间的最佳方法是什么? #1楼 采用: String timeStamp = new SimpleDateFormat("yyyyMMdd_HHmmss") ...
- Java 获取当前时间之后的第一个周几,java获取当前日期的下一个周几
Java 获取当前时间之后的第一个周几,java获取当前日期的下一个周几 //获得入参的日期 Calendar cd = Calendar.getInstance(); cd.setTime(date ...
- java得到文件创建时间linux,linux java获取文件创建时间
linux java获取文件创建时间 [2021-01-31 07:35:22] 简介: 服务器 背景 有时候我们需要获取文件的创建时间. 例如: 我在研究 <xtrabackup 原理图&g ...
- java获取当前时间和求时间差(分钟,秒钟,小时,年等)
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言 一.场景介绍 二.代码时间 1.获取当前时间 2.时间计算(加.减) 需求 前言 建议记住固定的api,因为是java ...
最新文章
- TCP/IP协议栈在MSP430单片机上的实现
- oracle结束过程,oracle 结束被锁的包或存储过程
- 云计算设计模式(十六)——优先级队列模式
- 开源串口 Ymodem 上位机软件
- 不同性能极限下的服务器,探求极限性能 服务器测试之ScienceMark
- glassfish启动后不能进入部署页面_Spring Boot 热部署
- 论文笔记_S2D.08-2019-ICRA-使用非对称标注实时联合语义分割和深度估计
- 什么是数据脱敏,数据脱敏有哪些方式
- 疑惑光栅投影中条纹间距和频率的关系
- gmoj 6841. 【2020.11.5提高组模拟】淘淘蓝蓝之树林
- 学计算机的要起一个群名,如何起一个代表青春的群名字
- 关于C++中的随机数生成器
- javascript系列-class6.String类型
- AutoCAD Civil 3D创建点文件描述码(点特征码)集控制展点样式与特性
- 安天 - 网络安全管培生一面
- SaltStack常用的模块
- Java Application 程序
- 适合有编程基础的人看的《韩顺平零基础30天学java》笔记(P104~P129)
- SQLServer 查询表的列名称、说明、备注、类型等
- 解读中国版存款保险制度:差别费率+强监管色彩