`
javachikuang
  • 浏览: 72108 次
  • 性别: Icon_minigender_2
  • 来自: 北京
社区版块
存档分类
最新评论

Java中获取年,月,日,时间

    博客分类:
  • j2SE
阅读更多

Java 语言提供了许多处理日期的工具。其中一些工具在其他语言中使用起来更困难一些。尽管如此,Java 语言提供的那些工具几乎可以做创建日期方面的任何事情,并完全根据您想要的格式对这些日期进行格式化。
当 Java 语言出错时,它会包含一个叫做 Date 的类,这个类对创建和处理日期很有帮助。不幸的是,这个类在支持同步方面表现不是很好,所以 Sun 添加了两个帮助改善这种情况的类:
· Calendar 
· DateFormat 
首先讨论一下 Calendar,稍后再讨论 DateFormat。
创建 Date 仍然比较容易:
Date aDate = new Date(System.currentTimeMillis());
或者可以使用以下代码:
Date aDate = new Date();
这将为我们提供一个表示当前确切日期和时间的 Date,并以当前地区 格式显示。国际化已经超出了本教程的范围,只要知道获得的 Date 与本地机器的地区时间一致即可。
既然有了一个实例,为什么不能处理它呢?坦率地说,它太小了。我们可以将一个 Date 与另一个日期进行比较,查看前一个日期是在后一个日期的 before() 还是 after()。还可以通过调用 setTime() 将日期重新设置为一个新的时间瞬间,setTime() 带有一个 long 参数,该参数表示从 1970 年 1 月 1 日午夜起至现在过去了多少毫秒,这也正是 System.currentTimeMillis() 返回的值。在此之外,我们受到了限制。
日历
现在,Date 给人们带来的混乱要多于它为人们带来的有用性,因为大部分日期处理行为都受到人们的抨击。人们习惯于获得并设置部分 Date(比如,年、月,等等)。现在,必须同时处理 Date 和 Calendar 才能设置部分 Date。但是一旦有了 Date 实例,就可以使用 Calendar 获得并设置部分 Date。例如:
Date aDate = new Date(System.currentTimeMillis());
Calendar calendar = GregorianCalendar.getInstance();
calendar.setTime(aDate);
在这里,我们创建了一个 GregorianCalendar,并将它的时间设置为以前创建的 Date。通过在 Calendar 上调用不同的方法,也能做到这一点:
Calendar calendar = GregorianCalendar.getInstance();
calendar.setTimeInMillis(System.currentTimeMillis());
通过 Calendar,我们现在可以访问和操作 Date 的组件。获得并设置部分 Date 也成为一个简单的过程。只需要在 Calendar 上调用适当的 getter 和 setter 即可,如下所示:
calendar.set(Calendar.MONTH, Calendar.JULY);
calendar.set(Calendar.DAY_OF_MONTH, 15);
calendar.set(Calendar.YEAR, 1978);
calendar.set(Calendar.HOUR, 2);
calendar.set(Calendar.MINUTE, 15);
calendar.set(Calendar.SECOND, 37);
System.out.println(calendar.getTime());
这将输出 1987 年 7 月 15 日上午 2 点 15 分 37 秒的格式化后的输出字符串。(在 Calendar 上也有一些辅助方法,允许同时设置一些或几乎所有的组件。)这里调用的是 set(),它带有两个参数:
· 想要设置的 Date 的 field(或组件)。 
· 该字段的值。 
我们可以用 Calendar 类中指定的常数来引用这些字段。在某些情况下,同一字段会有一个以上的名称,比如 Calendar.DAY_OF_MONTH,还可以用 Calendar.DATE 来引用它。除了可能是 Calendar.MONTH 的值和 Calendar.DATE 的值之外,其他的值都很简单。在 Java 语言的日期中,月份是基于 0 的(也就是说,1 月是 0),这使得使用指定的常数来设置月份值成为一种明智之举,但也使得正确地显示日期成为令人沮丧的事。小时的数值是从 0 到 24。
一旦有一个建立好的 Date,就可以提取其中的一部分。
System.out.println("The YEAR is: " + calendar.get(Calendar.YEAR));
System.out.println("The MONTH is: " + calendar.get(Calendar.MONTH));
System.out.println("The DAY is: " + calendar.get(Calendar.DATE));
System.out.println("The HOUR is: " + calendar.get(Calendar.HOUR));
System.out.println("The MINUTE is: " + calendar.get(Calendar.MINUTE));
System.out.println("The SECOND is: " + calendar.get(Calendar.SECOND));
System.out.println("The AM_PM indicator is: " + calendar.get(Calendar.AM_PM));
内置日期的格式化
通常可以使用 Date 格式化日期。现在,必须使用其他几个类:
· DateFormat 
· SimpleDateFormat 
· DateFormatSymbols 
在这里,我们并不想介绍日期格式化所涉及的所有复杂事物。您可以自己去研究这些类。但我们仍将介绍一些使用这些工具的基础知识。
DateFormat 类允许我们创建特定于场所的格式化程序,如下所示:
DateFormat dateFormatter = DateFormat.getDateInstance(DateFormat.DEFAULT);
Date aDate = new Date();
String formattedDate = dateFormatter.format(today);
该代码使用用于这种场所的默认格式创建了一个格式化的日期字符串。在我的机器上,这个日期字符串看起来是这样的:
Nov 11, 2005
这是默认样式,但所有的样式都适用于我们。我们可以使用任何预定义的样式。还可以调用 DateFormat.getTimeInstance() 来格式化时间,或者调用 DateFormat.getDateTimeInstance() 将日期和时间一起格式化。以下是各种样式的输出,都适用于美国地区:
样式 日期 时间 日期/时间
DEFAULT  Nov 11, 2005 7:44:56 PM Nov 11, 2005 7:44:56 PM
SHORT  11/11/05 7:44 PM 11/11/05 7:44 PM
MEDIUM  Nov 11, 2005 7:44:56 PM Nov 11, 2005 7:44:56 PM
LONG  November 11, 2005 7:44:56 PM EST November 11, 2005 7:44:56 PM EST
FULL  Thursday, November 11, 2005 7:44:56 PM EST Thursday, November 11, 2005 7:44:56 PM EST
定制格式化:
这些预定义的格式在大多数情况下表现良好,但是您也可以使用 SimpleDateFormat 定义自己的格式。使用 SimpleDateFormat 非常简单:
· 使用一个格式模式字符串(和一个地区,如果您希望的话)来实例化 SimpleDateFormat。 
· 使用 Date 在其上调用 format()。 
结果是一个格式化了的日期字符串。以下是一个例子:
Date aDate = new Date();
SimpleDateFormat formatter = new SimpleDateFormat("MM/dd/yyyy");
String formattedDate = formatter.format(today);
System.out.println(formattedDate);

在运行该代码时,将获得以下类似结果(当然,它将影响运行代码时的当前日期):
11/05/2005
在上述例子中,用引号括起来的字符串遵循了日期格式化模式的模式语法规则。Java.sun.com 中有一些那些规则的很好概括(请参阅 参考资料)。以下是一些有用的经验法则:您可以指定日期和时间的模式。
· 一些模式语法并不是由直觉得到的(例如,mm 定义了一个两位数的分钟模式;要获得简写的月份,可以使用 MM)。
· 通过将文本文字放入单括号中可以在模式中包含这

分享到:
评论
1 楼 pml346680914 2011-03-01  
很清晰,有值 得学的东西

相关推荐

    JAVA获取年月日(格式:xxxx年xx月xx日)、获取最近一年的年月(格式:xxxx年xx月).docx

    在给定的文档中,有两个主要的知识点:获取当前日期并按照“xxxx年xx月xx日”的格式输出,以及获取最近一年的年月并按照“xxxx年xx月”的格式输出。下面将详细介绍这两个知识点。 1. 获取年月日(格式:xxxx年xx月...

    java获取年月日

    用java来写个类,获取当前的年月日,自己也可以改,获取当前系统时间

    java获取文件创建时间

    在Java中,获取文件的创建时间并不像获取文件的最后修改时间那样简单直接。这是因为Java标准库(JDK)在早期版本中并没有提供直接获取文件创建时间的方法。不过,从Java 7开始,通过NIO(New I/O)API可以实现这一...

    java 获取标准北京时间

    java 获取标准北京时间 标准北京时间 北京时间 网络时间 internet时间

    Java 获取日期时间代码

    - **`java.util.Date`**:用于表示特定的瞬间,即从1970年1月1日00:00:00 GMT以来的毫秒数。 - **`java.sql.Date`**:专为数据库操作设计,主要用于存储和处理日期,不包含时间信息。 - **`java.util.Calendar`**:...

    java获取两个时间的相隔时间,包括年、月、日、时、分、秒

    在这个类中,可能包含了各种方法来计算两个`java.util.Date`对象之间的时间差,包括年、月、日、时、分和秒。以下是一些关于如何在Java中处理此类问题的知识点: 1. **日期和时间类**:在Java中,`java.util.Date` ...

    java获取时间大全

    Java获取时间是一个重要的编程任务,尤其在开发过程中处理日期和时间相关的逻辑时。Java提供了多种方式来操作和格式化时间,这些方法分布在不同的类和包中。以下是对这些知识点的详细说明: 1. **基础时间类:** -...

    java中获取系统时间

    1. **获取毫秒数**:`System.currentTimeMillis()`返回自1970年1月1日0时0分0秒以来的毫秒数。 2. **创建对象**:通过将上述毫秒数传递给`Date`类的构造函数,可以创建一个新的`Date`对象。 3. **输出结果**:与方法...

    用java获取网络时间

    建议在实际应用中考虑使用缓存机制或者更安全的方法来获取时间。 #### 扩展知识点 1. **`URLConnection`类详解**: - `URLConnection`是`java.net`包中的一个抽象类,用于封装对URL的连接。它提供了许多方法来...

    java获取list中两元素时间差

    Java 获取 List 中两元素时间差 Java 中获取 List 中两元素时间差是指在 List 集合中计算每个元素之间的时间差异。下面是相关知识点的详细解释: List 数据结构 List 是一种常见的数据结构,在 Java 中有多种实现...

    JAVA中获取当前系统时间.pdf

    JAVA中获取当前系统时间.pdf JAVA中获取当前系统时间是 Java programming 语言中的一项基本操作。获取当前系统时间可以使用多种方法,这里我们将介绍其中的两种方法。 方法一:使用 Date 类 在 Java 中,Date 类...

    java获取标准格林尼治时间

    java 获取标准格林尼治时 标准格林尼治时间 标准时间

    java获取今天、昨天、近一周、本周、本月时间段

    java获取今天、昨天、近一周、近两周、近三周、近一月、近两月、近三月、近半年、本周、上周、本月、上月时间段

    JAVA中获取当前时间

    ### Java中获取当前时间的关键知识点 #### 一、概述 在Java编程中,获取当前时间是一项基本而重要的技能。这不仅对于记录事件发生的时间、进行时间相关的计算等有着广泛的应用,也是开发过程中不可或缺的一部分。...

    java中计算某个月的工作日总共几天

    根据提供的文件信息,我们可以总结出以下关于Java中计算某个月工作日的相关知识点: ### Java中计算某个月的工作日总数及具体工作日 #### 概述 在Java中,要计算一个月内有多少个工作日(通常指周一至周五),以及...

    java获取日期 本周本年 本月 上一年

    java获取日期 本周本年 本月 上一年java获取日期 本周本年 本月 上一年java获取日期 本周本年 本月 上一年java获取日期 本周本年 本月 上一年java获取日期 本周本年 本月 上一年java获取日期 本周本年 本月 上一年...

    java 使用Date类获取系统的当前时间

    总的来说,`java.util.Date` 类在获取和表示当前系统时间上是一个基础且实用的工具,虽然在新的Java版本中有了更好的替代品,但理解其工作原理对于理解Java的日期和时间处理至关重要。在实际编程中,根据项目需求和...

    java的常用的获取时间的方法

    本文将详细介绍Java中常用的时间处理方法,特别是基于`java.util.Date`、`java.text.SimpleDateFormat`、`java.util.Calendar`等类的操作,以及如何通过这些方法获取当前时间、计算日期差、获取周、月、年的第一天和...

    java如何获取时间

    ### Java中获取时间的方法 在Java中,时间的获取与处理是常见的需求之一,尤其是在开发涉及日期、时间计算的应用程序时。本文将详细介绍如何在Java中获取系统当前时间,并通过不同的类来展示获取时间的不同方式。 ...

    java获取某一时间

    根据给定文件的信息,本文将深入探讨 Java 中与时间处理相关的知识,重点在于获取特定日期的方法及其实现细节。文章将覆盖如下知识点: 1. **Java 时间类的基础介绍** 2. **日期格式化与解析** 3. **获取当前日期、...

Global site tag (gtag.js) - Google Analytics