- 浏览: 1100237 次
- 性别:
- 来自: 成都
文章分类
最新评论
-
skyesx:
这是2PC实现,更常用的是一个柔性事务的实现,可以参考http ...
Spring分布式事务实现 -
ddbird:
这第一句就不严谨“分布式事务是指操作多个数据库之间的事务”,显 ...
Spring分布式事务实现 -
呵呵6666:
基于互联网支付系统的微服务架构分布式事务解决方案http:// ...
Spring分布式事务实现 -
小黄牛:
写得不错,交流群:472213887
Spring分布式事务实现 -
jiaoqf321456:
这明明是用的apache的压缩,给ant.jar有半毛钱关系吗 ...
使用ant.jar进行文件zip压缩
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 TimeZone timeZone = 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 setCNTimeZone(){ final TimeZone zone = TimeZone.getTimeZone("GMT+8"); TimeZone.setDefault(zone); } 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 -Duser.timezone=Asia/Shanghai DateTest
这个命令启动DateTest类,并设置 user.timezone属性到Asia/Shanghai。你也能够通过使用java.lang.System 类的setProperty方法来设置user.timezone 属性:
System.setProperty("user.timezone","Asia/Shanghai");如果没有一个可用的时间区域ID适合你,那么就你可以创建一个自定义TimeZone 使用java.util.TimeZone 类的 setDefault 方法将它设置为默认的时间区域----就象我先前在ItsInitializer 类中所做的操作一样。
记住,在J2SE中,大多数日期和时间相关的类都包含时间区域信息,包括那些格式类,如java.text.DateFormat, 因此它们都会被JVM的默认时间区域所影响。然而,在你创建这些类的实例时,你能为它们确保正确的时间区域信息,使得你可以更容易来设置整个JVM的默认时间区域。并且一旦设置好,就可以确保所有的这些类都将使用同一个默认的时间区域。
附:
Date Time Timestamp
评论
5 楼
netwelfare
2015-05-23
这里有篇《时间纪元与时区介绍》,讲解的也不错。
4 楼
taoge2121
2012-02-14
碰到过这种问题
3 楼
tuhaitao
2011-08-15
tuhaitao 写道
写的好,顶楼主
由于你写的太好了,我引用了一段,相信哥们你不会介意的
2 楼
tuhaitao
2011-08-15
写的好,顶楼主
1 楼
guodong66
2011-01-13
发表评论
-
使用zxing.jar生成二维码
2015-10-15 13:52 01、ZxingCodeUtils /** * 使用Zx ... -
Java生成条形码与二维码
2015-09-29 11:02 0一、一维条形码 /** * 利用jbarcode.ja ... -
将html特殊码( &#x)转换成字符
2015-06-09 11:54 0public static void main(St ... -
Java多线程编程
2013-10-16 13:45 0一、线程安全的延迟初始化 1、基于volatile的双重检查锁 ... -
Java常用方法整理
2013-06-13 16:00 01、判断是否为中文字符 /** * 判断是否为中文 ... -
使用servicemix实现FTP连接池
2013-06-13 13:17 0一、配置文件 <?xml version=" ... -
嵌入式运行HttpServer
2015-06-30 13:14 1759一、嵌入式运行Jetty并提供上传文件功能 1、定义处理请求的 ... -
使用Quartz执行定时任务
2012-05-24 11:00 0一、在application中运用 (1)定义任务 pac ... -
Java内存泄漏分析与解决方案
2012-03-18 13:49 0作为Internet最流行的编程语言之一,Java现正非常 ... -
java访问FtpSever
2011-10-09 15:18 0使用apache common-net包来实现。 ... -
JNI(Java Native Interface)的使用
2015-06-30 13:12 3273Java JNI是Java Native Interf ... -
Java Regular Expressions Syntax
2009-07-22 20:54 3088一、正则表达式语法 1. ... -
jsp custom taglib
2009-07-10 12:20 01.java文件 public class Repeate ... -
java filter
2009-07-10 12:13 17307过滤器Filter也具有生命周期:init()-> ... -
HTTP 头部详细解释
2009-07-09 11:46 01. Accept:告诉WEB服务器 ... -
JavaMail读发邮件
2009-07-07 14:04 6307一、基本概念: SMTP(Simple Mail Tra ... -
java 验证码/Checked vs UnChecked Exception
2009-06-15 10:54 2321<一>、Java生成验证码图片 1.Servlet ... -
jsp统计在线人数和在线注册人数
2009-05-31 12:50 9210一、统计在线人数 1.监 ... -
JPA是什么
2009-03-28 18:59 2444JPA全称为Java Persiste ... -
用dom4j读写xml
2009-03-18 21:57 3584一、例子 public class XML ...
相关推荐
### Java.util.TimeZone的世界时区列表解析 #### 一、概述 `java.util.TimeZone` 是Java标准库中的一个类,用于表示不同时区的信息。本文档提供了通过`java.util.TimeZone`类导出的世界范围内时区列表。该列表不仅...
Java中的`TimeZone`类是处理时区信息的关键组件。它代表了地球上特定地理位置的日出、日落和其他时间标准。在编程中,特别是在处理日期和时间跨不同地域的应用中,理解和正确使用`TimeZone`是非常重要的。以下是一些...
今天遇到了一个比较有意思的问题,从服务器上封装好的java.sql.timestamp对象返回到本地客户端程序后与数据库中的时间相差了整整14个小时。因为跟客户的时差是14个小时,所以大体怀疑是时差问题。
在Java编程中,`TimeZone` 类是处理时区的关键组件,它允许我们获取和设置与特定地理位置相关的日期和时间偏移。时区不仅反映了地理位置相对于格林尼治标准时间(GMT)的偏移,还考虑了夏令时(DST)的调整。本文将...
Oracle的Timestamp with Time Zone类型与Java的交互是数据库编程中一个重要的知识点,特别是在处理跨越时区的数据时。本文将深入探讨这两个概念以及它们在实际应用中的互动。 Oracle的Timestamp with Time Zone类型...
Java对世界不同时区timezone之间时间转换的处理方法 Java对世界不同时区timezone之间时间转换的处理方法是指在不同的时区之间进行时间转换的操作。下面将对Java中关于时区的概念、时区之间的时间转换方法、Java中...
在启动Java应用时,可以通过命令行参数 `-Duser.timezone=Asia/Shanghai` 来指定时区,将时区设置为亚洲上海,这样获取的时间就会对应到北京时间。 2. **代码中动态设置时区**: 如果你不能或不想通过命令行参数...
TimeZone timeZone = TimeZone.getTimeZone("Asia/Shanghai"); calendar.setTimeZone(timeZone); ``` 接下来,我们可能需要显示日期。Java提供了`SimpleDateFormat`类来进行日期格式化,如将日期转换为“年-月-日”...
java -Duser.timezone=Asia/Shanghai YourMainClass ``` 这将确保JVM使用上海时区,从而使得`new Date()` 输出正确的时间。 2. **在代码中显式设置时区**: 如果你无法或不想通过命令行参数改变JVM时区,你也...
例如,Java中的`java.util.TimeZone`类,提供了获取、设置和转换时区的方法。 在Windows系统中,系统资源库包含了全球各种时区的信息,开发者可以通过系统API来访问这些信息。而在Linux或Unix系统中,`zoneinfo`...
如果需要处理不同的时区,可以使用TimeZone类或者Java 8中的ZoneId类。例如,转换时区: ```java TimeZone timeZone = TimeZone.getTimeZone("Asia/Shanghai"); formatter.setTimeZone(timeZone); ``` 对于...
TimeZone easternTimeZone = TimeZone.getTimeZone("America/New_York"); Calendar easternCal = Calendar.getInstance(easternTimeZone); ``` 7. **日期比较** 使用 `Date` 类的 `before()`、`after()` 和 `...
TimeZone timeZone = TimeZone.getTimeZone("Asia/Shanghai"); calendar.setTimeZone(timeZone); ``` 9. **日期间隔计算** 可以使用`add()`方法增加或减少日期的一部分,例如增加一天: ```java calendar.add...
总结来说,Android中获取和处理时间主要涉及Date、SimpleDateFormat、Calendar、TimeZone以及java.time包的类。理解并熟练运用这些工具,可以满足大部分时间相关的编程需求。在实际项目中,根据Android版本和具体...
TimeZone timeZone = TimeZone.getDefault(); ``` #### 设置时区 对于模拟器而言,可以通过命令行参数来指定时区,如通过`-timezone "Asia/Taipei"`来设置台北时间为当前时区。对于实际设备来说,则需要通过系统...
TimeZone timeZone = TimeZone.getDefault(); // 获取设备时区 formatter.setTimeZone(timeZone); targetTime = formatter.parse(targetTimeString); ``` 此外,如果你使用的是Java 8的`java.time`包,可以使用`...
TimeZone timeZone = TimeZone.getDefault(); calendar.setTimeZone(timeZone); ``` 在处理日期和时间时,`Calendar`类提供了比`Date`类更强大和灵活的功能。通过熟练掌握`Calendar`,开发者可以在Java项目中实现...
5. **系统环境变量**:确保你的Java运行环境(JVM)的系统属性`user.timezone`设置正确。这可以通过在启动Java应用时添加`-Duser.timezone=Asia/Shanghai`命令行参数来实现。 总结来说,解决"IDEA错误 Cause: java....
"timezone-boundary-builder"是一个用于构建时区边界数据的开源工具,它帮助我们生成适用于Java `TimeZone` 类的数据。本文将深度剖析其源码,揭示其内部工作机制,帮助开发者更好地理解和使用这个工具。 1. **项目...
将`&serverTimezone=UTC`更改为`&serverTimezone=CTT`或者`&serverTimezone=Asia/Shanghai`,这样Java应用程序在与数据库交互时会使用中国标准时间,从而避免插入的时间出现偏差。 以下是一些相关的Java 8时间API和...