- 浏览: 138009 次
- 性别:
- 来自: 北京
文章分类
最新评论
java2平台为我们提供了丰富的日期时间API。如java.util.Date;java.util.calendar;java.text.DateFormat等。那么它们之间有什么关系呢?
首先,java.util.Date代表一个时间点,其值为距公元1970年1月1日 00:00:00的毫秒数。所以它是没有时区和Locale概念的。java通过如下形式取得当前时间点:
Date now = new Date(); //这个时间点与本地系统的时区无关
而正因为其与时区的无关性,才使得我们的存储数据(时间)是一致的(时区一致性)。一般的我们将now存储于数据库中,当我们需要展现数据时,将now格式化成想要的格式,如:2009-11-19 14:12:23。而这个功能一般交由java.text.DateFormat来实现。例如:
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String snow = sdf.format(now); // 2009-11-19 14:12:23
我们发现snow是带时间(14:12:23)的字符串,我们不禁要问,该时间(14:12:23)是哪个时区的时间?默认情况下,SimpleDateFormat 取得本地系统的时区(我的时区为GMT+8北京),然后按照pattern("yyyy-MM-dd HH:mm:ss")格式化now,此时输出的就是GMT+8区的时间了。如果想支持国际化时间,则先指定时区,然后再格式化date数据。例如:
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
sdf.setTimeZone(TimeZone.getTimeZone("GMT+8"));
String snow = sdf.format(now); // 2009-11-19 14:12:23
另外,你可以通过如下代码修改本地时区信息:
TimeZone.setDefault(TimeZone.getTimeZone("GMT+8"));
java.util.Calendar类也代表时间点,但它为Date的facade工具类,提供了很多对时间点到年、月、日、时、分、秒、星期等的转换(计算)的方便方法。
Calendar calendar = Calendar.getInstance(timezone);
Date d = calendar.getTime();
Calendar 的计算也是基于时区的,例如:同一个date在不同时区下的小时数是不一样的。但是calendar.getTime();返回的date是没有时区的,因为它是Date类型的。例如:
public static void main(String[] args) throws InterruptedException {
Calendar calendar1 = Calendar
.getInstance(TimeZone.getTimeZone("GMT+8"));
Calendar calendar2 = Calendar
.getInstance(TimeZone.getTimeZone("GMT+1"));
System.out.println("Millis = " + calendar1.getTimeInMillis());
System.out.println("Millis = " + calendar2.getTimeInMillis());
System.out.println("hour = " + calendar1.get(Calendar.HOUR));
System.out.println("hour = " + calendar2.get(Calendar.HOUR));
System.out.println("date = " + calendar1.getTime());
System.out.println("date = " + calendar2.getTime());
}
输出:
Millis = 1258614681203
Millis = 1258614681203
hour = 3
hour = 8
date = Thu Nov 19 15:11:21 CST 2009
date = Thu Nov 19 15:11:21 CST 2009
发表评论
-
使用memcached进行并发控制(转)
2015-12-29 14:39 885版权声明:本文为博主 ... -
Lock和Synchronized的不同
2014-10-24 15:46 768在 Java 中线程的状态可以分为:新建(New),运行状 ... -
ClassLoader加载流程
2014-04-16 09:59 677[b]当运行一个程序的时候,JVM启动, 运行bootstar ... -
springmvc请求接收参数的几种方法(转载)
2014-04-14 13:37 1535通过@PathVariabl注解获取路径中传递参数 JAVA ... -
JDK里的设计模式
2014-03-10 09:52 617适配器模式: 用来把一个接口转化成另一个接口。 java ... -
include与jsp:include区别
2014-02-28 15:03 582在jsp中include有两种形式,分别是 <%@ i ... -
DBCP的配置参数
2014-02-25 15:51 741tomcatde DHCP的配置 <Resource d ... -
java 时间处理的工具类(转)
2014-01-27 15:13 652import java.text.ParseException ... -
log4j
2014-01-17 13:56 395public Logger m_log = null; ... -
hessian异常总结
2013-12-12 17:53 1270版本不兼容 com.caucho.hessian.io.Hes ... -
java异常
2013-09-06 12:01 585java.sql.SQLException: Incorrec ... -
汉字转码的java实现
2013-08-05 17:26 1021package common; import java.ut ... -
验证邮件的有效性
2013-07-30 14:25 1134public static boolean checkEma ... -
优化Servlet配置
2013-04-09 10:31 641[b] 以往每添加一个Servlet就要在web. ... -
纯hessian的部署(转)
2012-11-06 17:44 833Web 服务是通过在 Web 服务器上部署 Servlet 来 ... -
Ehcache的使用
2012-07-27 15:11 852一、 配置文件ehcache.xml <ehcache& ... -
struts2上传文件活动文件名、类型
2012-05-16 08:45 942public class FileUpload { ... -
struts2乱码
2012-05-14 17:36 0Struts2.1.6 StrutsPrepareAndExe ... -
解决struts2过滤器冲突问题
2012-04-27 13:40 0struts2使用FilterDispatcher进行url过 ... -
cron表达式
2012-03-14 15:02 871所在组的定时任务用的quartz,是我第一个用的,今天有同事用 ...
相关推荐
在Java编程语言中,`Date`和`Calendar`类是处理日期和时间的核心组件。这两个类在不同的Java版本中有着不同的使用方式和功能,对于理解Java时间处理机制至关重要。本篇将深入探讨`Date`和`Calendar`类的实例应用。 ...
在Java中,我们可以使用java.util.TimeZone和java.util.Date类来实现时区时间转换。下面是一个简单的示例代码: ```java public static Date convertTimezone(Date sourceDate, String targetZoneId) { return ...
了解和熟练掌握这些知识点,可以帮助开发者更准确地处理Java中的时区问题,避免因为时区差异导致的错误。在处理跨国或跨地区的应用时,尤其需要注意时区的影响,确保日期时间的正确显示和计算。
可以使用 `java.util.Date` 类的 `toLocaleString()` 方法来输出当前日期,结果将根据本地时区进行格式化。 ```java <%@ page import="java.util.Date"%> <% Date myDate = new Date(); out.println(myDate....
总的来说,Java中`new Date()` 出现时间差的问题主要源于时区设置,可以通过调整JVM时区或者在代码中设定时区来解决。同时,不要忽视操作系统自身的时区设置,因为它可能会影响到其他非Java程序的时间显示。理解并...
在 Java 中,处理日期和时间主要依赖于 `java.util.Date` 和 `java.text.DateFormat` 这两个核心类。在本文中,我们将深入探讨如何使用这些类来获取、格式化和操作日期。 1. **获取当前时间** 获取当前时间最常用...
`java.time.LocalDate.of(year, month, day)`允许你创建指定日期的实例,而`java.time.format.DateTimeFormatter.ISO_LOCAL_DATE_TIME`则是预定义的ISO格式化器,方便快速格式化和解析日期时间。 总的来说,Java 8...
`java.util.Date`类是Java早期用来表示日期和时间的基础类,但它的API设计并不理想,存在一些问题,比如不支持时区转换、线程不安全等。随着Java的发展,`java.time`包中的类如`LocalDate`, `LocalTime`, `...
在Java编程中,`new Date()` 和 `Calendar.getInstance().getTime()` 都是获取当前系统时间的方法,但有时可能会出现获取到的时间与预期不符的情况。这种问题通常与时区设置、系统时间、Java运行环境以及代码逻辑...
在Java编程语言中,`java.util.Date` 类用于表示日期和时间。这个类在处理日期相关的操作时非常常见。在给定的文件中,我们看到了三个示例,它们分别展示了如何创建Date对象、格式化日期以及解析日期字符串。 1. **...
然而,直接将`java.util.Date`对象写入数据库可能会遇到问题,因为大多数数据库系统包括MySQL,都使用不同的日期/时间格式。 #### MySQL中的DateTime类型 MySQL的`DateTime`类型用于存储日期和时间组合,其格式为`...
本篇文章主要介绍了Java时区转换及Date类实现原理解析,通过示例代码对Java时区转换和Date类实现原理进行了详细的介绍,对大家的学习或者工作具有一定的参考学习价值。 一、时区的说明 地球表面按经线从东到西,被...
在Java编程语言中,`Calendar`和`Date`类是处理日期和时间的核心组件。这两个类在处理日期、时间计算以及格式化等任务时扮演着关键角色。理解并熟练运用它们,对于提升Java开发能力至关重要。 `Date`类是Java早期...
1. **Java日期时间API**:Java 8引入了新的日期时间API,取代了旧的`java.util.Date`和`java.util.Calendar`。`java.time.LocalDate`是这个新API的一部分,它表示不带时区的日期。要获取当前日期,我们可以使用`...
Java提供了多种方式来处理日期和时间,包括内置的`java.util.Date`类,以及从Java 8开始引入的`java.time`包中的新API。在描述中提到的"my97date"可能是指My97 DatePicker,这是一个流行的Java日期选择控件,常用于...
在IT领域,数据库管理和编程语言之间的数据类型对应关系是至关重要的。本文将深入探讨MySQL数据库中的时间类型以及它们在...在实际应用中,还要注意处理时区差异、日期时间格式化以及数据库与Java之间的兼容性问题。
2. 解析指定时间 public static ZonedDateTime parse(String date,String dateFormat,int offset) 3. 获取某一天的零点 public static ZonedDateTime getTodayZonedDayBegin(int offset) 4. 指定某一天的零点 public...
- "java date.doc"可能是关于这些概念的详细文档或代码示例,它可能包含了如何创建`Date`对象、如何比较日期和时间、以及如何实现时间段交叉判断的步骤和例子。 总结来说,"java-date.zip_java"这个压缩包文件很...
`java.util.Date`是早期Java版本中用于日期和时间操作的类,但它并不包含时区信息。在Java 8及更高版本中,`java.time`包被引入,提供了更强大和易于使用的API,如`LocalDateTime`, `ZonedDateTime`, 和 `ZoneId`等...
在处理日期时,XStream默认的转换策略可能无法满足所有需求,例如默认格式可能不符合项目规范,或者需要处理时区问题。这时,我们可以自定义一个DateConverter,用`@XStreamConverter`注解标记,以替换默认的转换器...