`
dyccsxg
  • 浏览: 205247 次
  • 性别: Icon_minigender_1
  • 来自: 青岛
社区版块
存档分类

Java 中与时间有关的几个问题

 
阅读更多

1. Date
# 需要说明的是 Date 无时区,
# 但date.toString() 则是按当前 JVM 的默认时区来格式化的,也就是 TimeZone.getDefault() 获得的时区,
# 同时 date.toString() 是按照 "EEE MMM dd HH:mm:ss zzz yyyy" 来格式化的;

2. Date to String

   SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS");
   String strDate = format.format(date);

3. String to Date
   SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
   Date date = format.parse(strDate);

4. 时区转换
   String strDate = "2013-07-17 10:12:15";
   String fromTimeZone = "GMT+8";
   String toTimeZone = "GMT+0";
   
   SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
   format.setTimeZone(TimeZone.getTimeZone(fromTimeZone));
   Date date = format.parse(strDate);
   format.setTimeZone(TimeZone.getTimeZone(toTimeZone));
   strDate = format.format(date);
   
   System.out.println(strDate);

5. 区域问题(不同的区域对时间的显示是不同的)
   SimpleDateFormat format1 = new SimpleDateFormat("EEE MMM dd HH:mm:ss zzz yyyy", Locale.SIMPLIFIED_CHINESE);
   SimpleDateFormat format2 = new SimpleDateFormat("EEE MMM dd HH:mm:ss zzz yyyy", Locale.US);
   System.out.println(format1.format(new Date())); // 星期三 七月 17 10:57:50 CST 2013
   System.out.println(format2.format(new Date())); // Wed Jul 17 10:57:50 CST 2013

6. 时间跳变
# 1582-10-04 的下一天是 1582-10-15
   Calendar calendar = Calendar.getInstance();
   calendar.set(Calendar.YEAR, 1582);
   calendar.set(Calendar.MONTH, 9);
   calendar.set(Calendar.DAY_OF_MONTH, 4);
   
   SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
   System.out.println(format.format(calendar.getTime())); // 1582-10-04
   calendar.add(Calendar.DAY_OF_MONTH, 1);                // 增加一天
   System.out.println(format.format(calendar.getTime())); // 1582-10-15
# 参见:http://dlc.sun.com.edgesuite.net/jdk/jdk-api-localizations/jdk-api-zh-cn/builds/latest/html/zh_CN/api/java/util/GregorianCalendar.html

# 夏令时
   Calendar calendar = Calendar.getInstance();
   calendar.set(Calendar.YEAR, 1986);
   calendar.set(Calendar.MONTH, 4);
   calendar.set(Calendar.DAY_OF_MONTH, 3);
   calendar.set(Calendar.HOUR_OF_DAY, 23);
   
   SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
   System.out.println(format.format(calendar.getTime())); // 1986-05-03 23:46:38
   calendar.add(Calendar.HOUR_OF_DAY, 1);                 // 增加一个小时
   System.out.println(format.format(calendar.getTime())); // 1986-05-04 01:46:38(中间跳过了 00:46:38)
# 参见:http://baike.baidu.com/view/100246.htm

7. 设置 JVM 的时区
# 在JVM启动的时候,加入参数-Duser.timezone=GMT+08
# GMT, UTC 和 CST 时间的区别
# GMT 代表格林尼治标准时间;
# UTC 是比 GMT 更加精确的世界时间标准,在不需要精确到秒的情况下,通常也将GMT和UTC视作等同;
# CST 可以同时表示中国、美国、澳大利亚、古巴四个国家的标准时间;
# 参见:
#http://www.cnblogs.com/sanshi/archive/2009/08/28/1555717.html
#http://baike.baidu.com/view/42936.htm

分享到:
评论

相关推荐

    java中计算两个日期相差几天

    在Java编程中,经常需要处理与日期和时间相关的操作。其中一项常见的需求就是计算两个日期之间的差距。本篇文章将详细介绍如何在Java中计算两个日期相差几天,并深入探讨示例代码中的关键概念和技术细节。 #### ...

    java判断时间大小

    本文将详细介绍如何在Java中实现日期与时间的比较,包括使用`SimpleDateFormat`、`Date`、`Calendar`等类进行时间格式化和比较的方法,并通过示例代码展示具体实现过程。 #### 二、使用`SimpleDateFormat`和`Date`...

    java获取系统时间与实际相差8小时的解决方法

    然而,有时我们可能会遇到一个常见问题,即从Java程序中获取到的时间与实际时间相差8小时,这主要是由于时区设置不正确导致的。这个问题在跨时区开发和运行应用时尤为突出。 首先,我们需要理解Java中的日期和时间...

    学习Java必须弄懂的几个问题

    以下是我从"学习Java必须弄懂的几个问题"这个主题中提炼出的一些重要知识点: 1. **Java基础语法**:Java是一种面向对象的语言,理解其基本语法结构至关重要。包括数据类型(如整型、浮点型、字符型和布尔型)、...

    java实现两个时间相差的年月日 (相差几年几天几日的结果)

    网上很多资源都没有输出结果是(相差几年几个月几天的代码)希望对大家有帮助 有不足地方 望大家多多指点

    java中 new date() 打印出的时间与系统时间错了八小时的解决方法

    在Java编程中,`new Date()` 用于创建一个表示当前日期和时间的对象。然而,有时候开发者可能会遇到这样一个问题:使用 `new Date()` 输出的时间与系统的实际时间相差了八个小时。这种情况通常是由时区(TimeZone)...

    java 手机时间显示

    在提供的`MobileCalendar.java`文件中,很可能是实现了一个日历功能或者与日期、时间相关的Android组件。通常,这类文件可能会包含以下几个部分: - 创建`Calendar`实例。 - 使用`DateFormat`或`SimpleDateFormat`...

    java视频剪辑,截取视频指定时间段内容

    Java视频剪辑涉及到的技术主要包括以下几个方面: 1. **多媒体库**:在Java中,常见的用于处理视频的库有Xuggler、JAVE(Java Advanced Video Encoder)以及FFmpeg的Java API(如JCodec)。这些库提供了处理音视频...

    时间序列算法java实现

    这些数据具有内在的时间依赖性,即当前值往往与过去的历史值有关。基于这种特性,时间序列预测方法通过识别和利用数据的模式(如趋势、季节性和周期性)来预测未来的值。 时间序列预测算法主要包括以下几种类型: ...

    js和java返回三个月前的时间

    ### 使用JS和Java返回三个月前的时间 在软件开发过程中,日期和时间的处理是一项非常常见的需求,尤其是在涉及历史数据查询、统计分析等场景时。本文将详细介绍如何使用JavaScript(JS)和Java这两种语言来实现获取...

    java编写的时间钟

    在Java中实现时间钟,主要涉及到以下几个核心知识点: 1. **Java Swing或JavaFX**:这两个是Java的图形用户界面(GUI)库,用于创建窗口应用。Swing是Java标准版的一部分,而JavaFX则提供了更现代的UI组件和更好的...

    java 计算时间差

    在 Java 中计算两个日期之间的时间差是常见的需求之一,尤其是在需要处理时间序列数据的应用程序中。本文将详细介绍几种不同的方法来计算两个日期之间的差值,并提供相应的代码示例。 #### 1. 使用 `...

    java相对时间计算(几天前、几年前

    相对时间计算是指获取当前时间与过去或未来某个时间点之间的差异,通常以“几天前”、“几年前”这样的形式展示。Java提供了一些内置类来帮助我们进行这类计算,如`java.util.Date`、`java.util.Calendar`以及`java....

    JAVA时间工具类(计算法定工作日工时等)

    JAVA时间工具类(计算法定工作日工时):计算某个日期加上几个工作日后的一个工作日期(除周末和法定节假日),计算某个日期后一天的工作日期(除周末和法定节假日),计算两个日期的真实工作日(除周末和法定节假日),...

    java时间轮的定时器,多轮和单轮实现

    Java时间轮定时器是一种高效的定时任务管理工具,其设计灵感来源于计算机网络中的分桶调度算法。时间轮的主要思想是将时间划分为多个槽,每个槽代表一段时间间隔,定时任务则被分配到相应的槽中,通过轮询的方式实现...

    java计算两个时间相差月数

    java计算两个时间(yyyy-MM-dd HH:mm:ss)相差月数两个时间格式可为年月日时分秒

    java中时间操作函数

    在 Java 中,`Calendar` 和 `Date` 是两个不同的时间类型。`Calendar` 是一个抽象类,提供了对日期和时间的操作,而 `Date` 是一个具体的时间类型,表示一个特定的日期和时间。 (1) Calendar 转化为 Date 可以使用...

    Java API文档 中文网页版

    在使用Java API文档时,开发者通常会关注以下几个方面: 1. 类(Class):了解类的职责、构造器、属性和方法。 2. 接口(Interface):查看接口定义的方法,了解其作用和实现方式。 3. 方法(Method):理解方法的...

    关于Java的几个经典问题

    到底创建了几个String对象(三)——变量(属性)的覆盖 (四)——final、finally和finalize的区别 (五)——传了值还是传了引用(六)——字符串(String)杂谈 (七)——日期和时间的处理 (八)——聊聊基本...

    Java实现时间与日期程序(附源代码)

    在Java编程语言中,处理时间与日期是常见的需求,无论是记录事件发生的时间,还是进行时间相关的计算,都离不开对日期和时间的操作。本教程将深入探讨如何在Java中实现这样的程序,并提供源代码实例。 首先,Java...

Global site tag (gtag.js) - Google Analytics