`

Java日期处理

 
阅读更多

不得不吐槽一下Java的日期处理。太不爽了。

 

基本概念

UTC:世界标准时间。 

UT:UTC在科学上的简称。

GMT:格林威治时间。

UTC,UT,GMT 其实是同一个概念。

 

 

一. Date (日期类)

Date类中许多方法都已经过时了。只有少数方法还能使用。

 

 

 

二. DataFormat与SimpleDateFormat  (日期格式类)

Java的日期格式化处理类位于java.text包中。

1. DataFormat

DataFormat是一个抽象类。

 

 

2. SimpleDateFormat

SimpleDateFormat类继承自DataFormat类。该类用于处理日期格式化。

SimpleDateFormat实例表示一种“日期格式”。

其构造方法:

SimpleDateFormat()

SimpleDateFormat(String pattern)

SimpleDateFormat(String pattern, DateFormatSymbols formatSymbols)

SimpleDateFormat(String pattern, Locale locale)

 

例:创建“2012年12月12日” 的日期格式

SimpleDateFormat sdf=new SimpleDateFormat("yyyy年MM月dd日");

 

 

3. 常用方法

(1) 将日期格式化为字符串

format方法

该方法用于将Date对象转为当前格式的字符串。该方法在DataFormat类与SimpleDataFormat类中均有定义。

例:

Date date = new Date();
SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日");
String datestr = sdf.format(date);
System.out.println(datestr);

 

 

(2) 将字符串解析为日期

parse方法

从给定字符串的开始解析文本,以生成一个日期。

例:

SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日");
Date date = sdf.parse("2012年12月12日");
System.out.println(date);

 

 

 

三. Calendar(日历类)

Calendar是抽象类。

Calendar类有许多实现的子类。常用的子类如GregorianCalendar。

GregorianCalendar:格林威治格式的日历,该日历可以用于表示各个时区的日历。

 

1. 得到Calendar实例

Calender类提供了一个静态方法getInstance,以获得此类型的一个通用的对象。

static Calendar getInstance() 

static Calendar getInstance(Locale aLocale) 

static Calendar getInstance(TimeZone zone) 

static Calendar getInstance(TimeZone zone, Locale aLocale)

该方法用于得到当前时刻的Calendar实例。

可以通过Locale,TimeZone参数而获得某个时区的此刻的Calendar实例

 

例:

Calendar calendar = Calendar.getInstance();

 

 或者可以使用Calendar的子类实现得到一个Calendar实例。

例:

Calendar calendar = new GregorianCalendar();

 

 

2. Calender的set和get

(1) set方法

void set(int field, int value) 

          将给定的日历字段设置为给定值。 

void set(int year, int month, int date) 

          设置日历字段 YEAR、MONTH 和 DAY_OF_MONTH 的值。 

void set(int year, int month, int date, int hourOfDay, int minute) 

          设置日历字段 YEAR、MONTH、DAY_OF_MONTH、HOUR_OF_DAY 和 MINUTE 的值。 

void set(int year, int month, int date, int hourOfDay, int minute, int second) 

          设置字段 YEAR、MONTH、DAY_OF_MONTH、HOUR、MINUTE 和 SECOND 的值。

 

(2) get方法 

int get(int field) 

          返回给定日历字段的值。 

 

(3) set/get方法中的field的意义:

field都是Calendar类中定义的静态变量。

Calendar静态变量

意义 Calendar静态变量 意义

YEAR

MONTH

DATE

HOUR

MINUTE

SECOND

MILLISECOND

WEEK_OF_MONTH

WEEK_OF_YEAR

小时

分钟

毫秒

某月的周

某年的周

 

DAY_OF_MONTH

DAY_OF_WEEK

DAY_OF_WEEK_IN_MONTH

DAY_OF_YEAR

 

HOUR_OF_DAY

ERA

ZONE_OFFSET

DST_OFFSET

 

 

 

3. Calender类与Date类

(1) Calender实例取得Date对象

Date getTime()  返回一个表示此 Calendar 时间值(从历元至现在的毫秒偏移量)的 Date 对象。 

例:对Calendar实例指定日期

Date date=calendar.getTime();

 

 

(2) Calendar实例设置指定的Date对象

void setTime(Date date)  使用给定的 Date 设置此 Calendar 的时间。 

例:设置指定的date 。

calendar.setTime(date);

 

 

4. 时间计算

Calender对象的方法 方法意义

void add(int field,int amount) 

void roll(int field,boolean up)

void roll(int field,int amount)

根据日历的规则,为给定的日历字段添加或减去指定的时间量。 

在给定的时间字段上添加或减去单个时间单元,不更改更大的字段。

 向指定日历字段添加指定(有符号的)时间量,不更改更大的字段。

 

 

 

四. java.sql.Date、java.sql.Time、java.sql.Timestamp (数据库日期类)

java.sql.Date,java.sql.Time,java.sql.Timestamp 都继承于java.util.Date

java.sql.Date用于数据库中的日期处理,该类只表示了java.util.Date的日期部分

java.sql.Time用于数据库中的时间处理,该类只表示了java.util.Date的时间部分

java.sql.Timestamp类表示数据库中时间戳的数据,该类的实例包含日期也包含时间

 

说明:

java.sql.Date、java.sql.Time、java.sql.Timestamp都是java.util.Date的子类。所以,所以对java.util.Date类的处理方法,这三个类的实例都可以使用。

 

 

 

 五. TimeZone(时区类)

TimeZone类用于表示时区。

 

1. 取得一个时区实例

static TimeZone getTimeZone(String ID) 

ID,表示地区的ID。

 

例:获取日本的日历对象。日本的ID为“Japan” 。

TimeZone tz = TimeZone.getTimeZone("Japan");
Calendar jpcalendar = new GregorianCalender(tz);

 

 

2. 获取已定义的ID

static String[] getAvailableIDs() 

          获取受支持的所有可用 ID。 

static String[] getAvailableIDs(int rawOffset) 

          根据给定的时区偏移量(以毫秒为单位)获取可用的 ID。 

 

例:获取所有已定义的ID

for(String str : TimeZone.getAvailableIDs){
    System.out.println(str);
}

 

 

 

 

 

 

 

分享到:
评论

相关推荐

    java日期处理大全

    ### Java日期处理大全:掌握时间的艺术 在Java编程中,日期和时间的处理是不可或缺的一部分,尤其是在涉及到数据记录、时间戳、定时任务等场景时。本文将深入探讨Java中的日期处理技术,涵盖从基础到进阶的各种技巧...

    java日期处理

    java日期处理

    java日期处理总结

    java中关于日期处理的总结,包含各种日期格式之间的转java.util.Date(已经不提倡使用,该类的方法比较少) java.util.Calendar(抽象类) java.util.GregorianCalendar(是Calendar的子类,日期处理时候经常使用该类)****...

    Java日期处理工具类

    基本涵盖了各种场景的日期处理需要,包括时间类型转换,获取N天前后,月初月末,某段时间按天拆分等功能,欢迎使用。

    java日期处理方法

    ### Java日期处理方法 在Java开发中,对日期与时间的操作是极其常见且重要的一个环节。无论是处理用户的出生年月日、注册日期还是订单的创建时间等,都需要使用到Java提供的日期类进行处理。本文将深入探讨Java中的...

    常用代码:java日期处理

    这篇博客"常用代码:java日期处理"很可能包含了关于如何在Java中有效地处理日期的实用示例和方法。这里我们将深入探讨Java日期处理的核心概念、API和最佳实践。 1. **Java日期API的发展历程** - Java 1.0引入了`...

    DateHandler.java日期处理类Java文件下载.rar

    DateHandler.java日期处理类Java文件下载,有些功能很不错哦,比如计算是否是季度末、计算从现在开始几天后的时间、得到当前时间,用于文件名,使用yyyyMMddHHmmss格式、比较日期,与现在-N天的日期对比、比较日期,...

    Java日期处理类 自己整理的

    自己整理的Java日期处理类 。包含获取两个之间段之间的天数、月初日期,月末日期、一个时间段之间的所有的日期,月份 一周的第一天,最后一天、 当前是周几等。仅供参考

    java日期处理小结

    在Java中,日期处理是一项常见的任务,涉及到多个类和方法。本篇文章主要总结了Java中关于日期处理的基础知识,包括`java.util.Calendar`,`java.util.GregorianCalendar`以及`java.util.Date`这三个核心类。 首先...

    java 日期处理工具类

    java 日期处理工具类

    java语言日期处理大全

    以下是一些关于Java日期处理的关键知识点,这些知识点在给定的文件中有所提及: 1. **获取当前日期**: Java通过`java.util.Date`类可以获取服务器上的当前日期。创建一个Date对象即会返回当前系统时间,如`Date ...

    Java中日期处理的代码

    根据给定的文件标题、描述、标签以及部分内容,我们可以总结出以下有关 Java 日期处理的知识点: ### 1. 导入必要的包 在 Java 中处理日期时,我们需要导入一些必要的包来支持日期时间的格式化、解析等功能。示例...

    java日期处理.pdf

    在Java编程中,日期处理是常见的任务之一,用于管理和计算日期和时间。Java提供了多种类和方法来处理日期,如`Date`、`SimpleDateFormat`和`Calendar`。以下是关于这些类和方法的详细说明: 1. **`java.util.Date`*...

    java(日期处理大全)

    第一部分关于JAVA的Date (参考关于JAVA的Date总结) 第二部分Date工具类(参考一个总结好的很好的关于JAVA的Date工具类)

    java日期处理[文].pdf

    在Java编程中,日期处理是常见的任务之一,用于管理和计算日期和时间。本文将深入探讨Java中的日期处理机制,特别是围绕`java.util.Date`和`java.util.Calendar`这两个核心类。 首先,`java.util.Date`类是Java中...

    java日期和查询数据库生成XML文件类

    1. **Java日期处理**: - `java.time`包:Java 8引入的新时间日期API,提供了`LocalDate`, `LocalTime`, `LocalDateTime`等类,它们提供了丰富的日期和时间操作功能。 - `SimpleDateFormat`:旧版日期格式化工具,...

Global site tag (gtag.js) - Google Analytics