`
lx休止符
  • 浏览: 14254 次
  • 来自: dsadsa
最近访客 更多访客>>
社区版块
存档分类
最新评论

java Date和时区转换【转】

阅读更多

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

分享到:
评论

相关推荐

    java转换时区时间过程详解

    在Java中,我们可以使用java.util.TimeZone和java.util.Date类来实现时区时间转换。下面是一个简单的示例代码: ```java public static Date convertTimezone(Date sourceDate, String targetZoneId) { return ...

    java 时区转换工具包

    2. 解析指定时间 public static ZonedDateTime parse(String date,String dateFormat,int offset) 3. 获取某一天的零点 public static ZonedDateTime getTodayZonedDayBegin(int offset) 4. 指定某一天的零点 public...

    Java时区转换及Date类实现原理解析

    本篇文章主要介绍了Java时区转换及Date类实现原理解析,通过示例代码对Java时区转换和Date类实现原理进行了详细的介绍,对大家的学习或者工作具有一定的参考学习价值。 一、时区的说明 地球表面按经线从东到西,被...

    java的Date类型转换成MySQL的DateTime类型.docx

    ### Java的Date类型转换成MySQL的DateTime类型 在软件开发特别是网络游戏开发中,记录关键时间点(例如游戏开始时间和结束时间)并将其保存至数据库是非常常见的需求。由于Java中的`java.util.Date`类与MySQL数据库...

    一个long型与Date型时间转换工具

    总的来说,"一个long型与Date型时间转换工具"是一个实用的Java库,它简化了日期和时间戳之间的转换,并可能包含了一些额外的日期处理功能。对于需要频繁处理日期和时间的开发者和测试人员来说,这是一个非常有价值的...

    Date类型数据转换

    Date类型数据转换是Java编程语言中非常重要的一种数据类型转换。它可以将String类型的日期字符串转换为Date类型的日期对象,也可以将Date类型的日期对象转换为String类型的日期字符串。在本文中,我们将详细介绍Date...

    基于java时区转换夏令时的问题及解决方法

    "基于Java时区转换夏令时的问题及解决方法" 在Java中进行时区转换时,需要了解夏令时的概念和时区的...在Java中进行时区转换需要了解夏令时的问题,并使用正确的时区表示方法和时区转换方法,以确保时区转换的正确性。

    java日期时间转换大全

    总之,Java提供了丰富的工具和类库来处理日期和时间,包括但不限于`java.util.Date`、`java.text.SimpleDateFormat`、`java.util.Calendar`以及新的`java.time`包。通过合理选择和运用这些工具,可以有效地处理各种...

    XStream的Date转换 @XStreamConverter DateConverter

    `Test.java`和`TestDate.java`可能是测试类,用于验证Date转换器的正确性。它们可能会创建一些包含Date对象的Java类,然后使用XStream实例进行序列化和反序列化操作,确保日期的转换符合预期。测试代码可能如下所示...

    Java时间转换

    在Java时间转换中,获取当前时间可以使用java.util.Date类和java.util.Calendar类。这些类提供了多种方法来获取当前时间,例如使用new Date()方法获取当前时间,或者使用Calendar.getInstance()方法获取当前时间。 ...

    Java日期转换

    这篇博客"Java日期转换"探讨了如何在Java中有效地转换和操作日期。Java提供了多种类库来支持日期和时间的操作,包括`java.util.Date`、`java.text.SimpleDateFormat`、`java.time`包中的类等。本文将详细讲解这些类...

    Java 之 Date 和 Calendar 实例

    在Java编程语言中,`Date`和`Calendar`类是处理日期和时间的核心组件。这两个类在不同的Java版本中有着不同的使用方式和功能,对于理解Java时间处理机制至关重要。本篇将深入探讨`Date`和`Calendar`类的实例应用。 ...

    Java对世界不同时区timezone之间时间转换的处理方法

    Java对世界不同时区timezone之间时间转换的处理方法 Java对世界不同时区timezone之间时间转换的处理方法是指在不同的时区之间进行时间转换的...使用Java实现时区之间时间转换可以使用TimeZone类和DateFormat类等。

    date_时间转换_时间戳转换_

    这时,需要使用时区转换功能,例如Python的`pytz`库,JavaScript的`Intl.DateTimeFormat`。 压缩包中的`date`文件可能是这个小程序的源代码,通过查看和分析代码,我们可以了解它是如何实现这些功能的。对于开发者...

    将c#的DateTime类转成java

    `DateTime`是C#中用于表示日期和时间的内置类型,而在Java中,相应的类型是`java.util.Date`和`java.time`包下的类,如`LocalDate`, `LocalTime`和`LocalDateTime`等。 C#的`DateTime`类提供了一系列方法和属性来...

    java编程中String类型时间转化成Date类型

    java编程中String类型时间转化成Date类型

    Java_Date_日期时间整理

    可以使用 `java.util.Date` 类的 `toLocaleString()` 方法来输出当前日期,结果将根据本地时区进行格式化。 ```java <%@ page import="java.util.Date"%> <% Date myDate = new Date(); out.println(myDate....

    java 时间转换(转载)

    在Java编程语言中,时间转换是一项常见的任务,特别是在处理日期和时间数据时。这篇博文主要探讨了如何在Java中进行时间转换,以下是一些关键的知识点: 1. **日期和时间类**: Java提供了多种类来处理日期和时间...

    java中时间转换

    在Java中,我们通常使用`SimpleDateFormat`类和`Date`类来完成这个任务。以下是一个简单的例子: ```java import java.text.SimpleDateFormat; import java.util.Date; public class StringToTimestamp { public ...

    java操作date对象

    【Java 操作 Date 对象详解】 在 Java 中,处理日期和...无论是简单的当前时间获取,还是复杂的日期格式化和时区转换,都可以轻松实现。在实际开发中,根据具体需求选择合适的方法,可以有效地管理和展示日期信息。

Global site tag (gtag.js) - Google Analytics