时间戳代码

protected static Format format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");public static void printSysProperties(){Properties props=System.getProperties(); Iterator iter=props.keySet().iterator(); while(iter.hasNext()){ String key=(String)iter.next(); System.out.println(key+" = "+ props.get(key)); } }/*** timeZoneOffset表示时区,如中国一般使用东八区,因此timeZoneOffset就是8* @param timeZoneOffset* @return*/public String getFormatedDateString(int timeZoneOffset){if (timeZoneOffset > 13 || timeZoneOffset < -12) {timeZoneOffset = 0;}TimeZone timeZone;String[] ids = TimeZone.getAvailableIDs(timeZoneOffset * 60 * 60 * 1000);if (ids.length == 0) {// if no ids were returned, something is wrong. use default TimeZonetimeZone = TimeZone.getDefault();} else {timeZone = new SimpleTimeZone(timeZoneOffset * 60 * 60 * 1000, ids[0]);}SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");sdf.setTimeZone(timeZone);return sdf.format(new Date());}public static String getFormatedDateString(String _timeZone){TimeZone timeZone = null;if(StringUtils.isEmpty(_timeZone)){timeZone = TimeZone.getDefault();}else{timeZone = TimeZone.getTimeZone(_timeZone);}SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日  HH时mm分ss秒");sdf.setTimeZone(timeZone);//TimeZone.setDefault(timeZone);return sdf.format(new Date());
}public static void main(String args[]){System.out.println(getFormatedDateString(""));System.out.println(getFormatedDateString("Asia/Shanghai"));System.out.println(getFormatedDateString("Japan"));System.out.println(getFormatedDateString("Europe/Madrid"));System.out.println(getFormatedDateString("GMT+8:00"));printSysProperties();}

时间区域和JAVA 
    涉及有关时间区域信息时Java和Solaris很相似。每个时间区域都有一个时间区域ID标识符。在J2SE 1.3 and 1.4中,这个ID是个字符串,是由位于J2SE 安装程序的jre/lib子目录中的tzmappings文件这些ID列表。 J2SE 1.3 仅仅只包含tzmappings文件,但是 J2SE 1.4包含世界不同地区的时间区域数据文件。jre/lib/zi存放着这些文件。在J2SE 1.4里,sun.util.calendar.ZoneInfo从这些文件获取DST规则。在Solaris中, 这些时间区域数据文件是以二进制形式存放的,不是文本文件,因此你不能看它们。 在J2SE 1.4中的时间区域数据文件和在Solaris中是不同的。

java.util.TimeZone类中getDefault方法的源代码显示,它最终是会调用sun.util.calendar.ZoneInfo类的getTimeZone 方法。这个方法为需要的时间区域返回一个作为ID的String参数。这个默认的时间区域ID是从 user.timezone (system)属性那里得到。如果user.timezone没有定义,它就会尝试从user.country和java.home (System)属性来得到ID。 如果它没有成功找到一个时间区域ID,它就会使用一个"fallback" 的GMT值。换句话说, 如果它没有计算出你的时间区域ID,它将使用GMT作为你默认的时间区域。

注意,System属性是在java.lang.System类的initProperties方法中被初始化的。这是一个本地方法。因此源代码是不可用的----除非你深入到J2SE分发包中的本地代码库中去研究。然而,在Windows系统中,System 属性是从Windows注册表中被初始化的,而在Linux/Unix中是由环境变量来进行初始化。initProperties方法的Javadoc声明,某些属性"必须保证被定义" 且列出它们。被java.util.TimeZone类的getDefault方法使用的三个System属性中,只有java.home作为一种“保证的”属性在Javadoc中被列出。

推荐的解决方案  
     因此,你如何确保JAVA能给你正确的时间和日期呢?最好的办法是确认JAVA虚拟机(JVM)的默认TimeZone类是正确的,且是适合你的地理范围(Locale)的。你如何来确保默认TimeZone是正确的且适合的呢?这又是一个新问题了。象大多数处理的问题一样,这个也有许多解决方案。根据java.util.TimeZone.getDefault方法的源代码来看,最好的办法是正确地设置user.timezone属性。在启动JAVA虚拟机时,你能很容易的通过使用 -D 命令 -line 参数的办法来覆盖(override)在java.lang.System.initProperties方法中所设置的值。例如:

Java代码   
  1. java -Duser.timezone=Asia/Shanghai DateTest
java -Duser.timezone=Asia/Shanghai DateTest

这个命令启动DateTest类,并设置 user.timezone属性到Asia/Shanghai。你也能够通过使用java.lang.System 类的setProperty方法来设置user.timezone 属性:

Java代码   
  1. System.setProperty("user.timezone","Asia/Shanghai");
System.setProperty("user.timezone","Asia/Shanghai");

如果没有一个可用的时间区域ID适合你,那么就你可以创建一个自定义TimeZone 使用java.util.TimeZone 类的 setDefault 方法将它设置为默认的时间区域----就象我先前在ItsInitializer 类中所做的操作一样。

记住,在J2SE中,大多数日期和时间相关的类都包含时间区域信息,包括那些格式类,如java.text.DateFormat, 因此它们都会被JVM的默认时间区域所影响。然而,在你创建这些类的实例时,你能为它们确保正确的时间区域信息,使得你可以更容易来设置整个JVM的默认时间区域。并且一旦设置好,就可以确保所有的这些类都将使用同一个默认的时间区域。 
转载至:http://my.oschina.net/hulubo/blog/40888

java时间戳 时间格式转换与时差相关推荐

  1. java UTC时间格式转换

    UTC时间格式样例:2018-09-28T16:00:00.000Z 本地时间格式样式:2018-09-28 24:00:00 将本地时间格式转换成UTC格式 public static String ...

  2. java datetime 转换_如何实现Java日期时间格式转换

    Java日期时间以及日期相互转换 Java日期时间,以及相互转化,供大家参考,具体内容如下 package com.study.string; import java.text.ParseExcept ...

  3. Java——时间戳和时间格式转换

    时间戳(TimeStamp):通常是一个字符序列,唯一地标志某一刻的时间.Java 中时间戳是指格林威治时间1970年01月01日00时00分00秒起至现在的总毫秒数. 一.获取时间戳的方式 1.Sy ...

  4. java定义时间格式大全_Java时间格式转换大全

    package com.date; import java.text.DateFormat; import java.text.ParseException; import java.text.Par ...

  5. java格式_java时间格式转换大全

    Java时间格式转换大全 import java.text.*; import java.util.Calendar; public class VeDate { /** * 获取现在时间 * * @ ...

  6. php把时间格式转换为时间戳,php如何将时间格式转换成时间戳?

    php时间格式转换为时间戳的方法:1.使用mktime()将时间转换为时间戳,语法为"mktime(小时.分钟.秒.月.日.年)":2.使用strtime()将字符串表示的日期转换 ...

  7. java时间格式转换_Java时间日期格式转换

    突然忘记了时间格式怎么转换,特此做个记录 Java时间格式转换大全 import java.text.*; import java.util.Calendar; public class VeDate ...

  8. java输出格林威治时间_Java之格林威治时间格式转换成北京时间格式

    Java之格林威治时间格式转换成北京时间格式 /** * Copyright 2020. yaodouwang.com Studio All Right Reserved * * Create on ...

  9. Java ISO 8601时间格式转换

    String pattern = "YYYY-MM-dd'T'HH:mm:ss.SSSZZ"; String timeStr=DateFormatUtils.format(new ...

最新文章

  1. dfs递归实现组合型枚举
  2. python文件分块读取_Python多进程分块读取超大文件的方法
  3. 用命令行连接mysql文件时出现错误_MySQL使用cmd命令窗口安装错误信息提示的解决方法...
  4. c语言寻找公共字符串,C语言查找两个字符串中的最大公共子串
  5. GitHub停用俄罗斯公司开发者账号
  6. 4个macOS上隐藏的小技巧
  7. Ubuntu14.10安装Eclipse
  8. 多图赏析联想Windows 8平板ThinkPad Tablet 2
  9. APS计划排程和生产排产系统,包含哪些排程算法?
  10. 双击 计算机 打不开,电脑双击桌面图标打不开的解决方法
  11. 用Windows电脑看epub小说,哪些阅读器软件更好用?
  12. Unity3D Shader 入门
  13. PostgreSQL安装详细步骤(linux)
  14. 5年多工作经验,工资给15k,要是你,你会接受吗?
  15. 软考云题库Web版题库V1.1更新功能
  16. opencv识别图像红色区域,并输出红色区域中心点坐标
  17. Ubuntu 20.04 美化终端
  18. css gray rgb数值,CSS3 调色板 颜色值对照表
  19. (转)SCJP 认证考试指南
  20. 'BMap' is not defined 解决方案

热门文章

  1. web静态网页-爱心公益小站
  2. Faster RCNN超详细入门 02 网络细节与训练方法
  3. 触摸芯片电路布局和走线设计注意事项
  4. 基于S3C2440的电子鹰眼监控系统设计
  5. influxDB 常用聚合函数整理
  6. XSSFWorkbook Excel导出导入
  7. 如何利用ps去除图片水印和绘制图案
  8. 电脑重装系统之后风扇一直很响如何优化
  9. Java与es8实战之二:Springboot集成es8的Java Client
  10. SP2-0734: unknown command beginning *** – rest of line ignored.