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)。
· 通过将文本文字放入单括号中可以在模式中包含这
发表评论
-
Log4j(1)
2007-07-16 11:40 5841、 Log4j是什么? Log4j可以帮助调试(有时候 ... -
Ant
2007-07-16 11:42 565ant使用教程 Ant是什么? Ant是一种基 ... -
Log4j(2)
2007-07-16 17:07 603Log4j由三个重要的组件 ... -
java基础
2007-07-18 16:50 676第一,谈谈final, finally, finalize的区 ... -
spring hibernate struts异常解决办法
2007-07-20 09:56 5601。Caused by: java.lang.NoClassD ... -
eclipse3.2.0+myeclipse5.5.1开发struts1.2+spring2.0+hibernate3.1
2007-07-20 13:37 6651.首先新建一个Web工程2.添加Struts框架1.2版本3 ... -
Java.io包
2007-08-14 10:23 5951.1 以字节为导向的stream 以字节为导向的str ... -
struts中javascript验证登陆
2007-08-21 10:57 556<script type="text/java ... -
Validator验证框架使用教程
2007-08-21 16:05 590Terry原创,转载请 ... -
Struts:与Tiles框架的第一次亲密接触
2007-08-22 10:37 9051.在你的struts配置文件struts-config.x ... -
用过滤器filter解决乱码
2007-09-25 10:36 827当在做程序的是你也许会遇到一些很让你恼火的乱码问题 ... -
简单工厂模式与工厂方法模式的比较
2008-03-31 09:20 583在OO设计领域,我们知 ... -
简单工厂模式,工厂方法模式和抽象工厂模式的区别
2008-04-01 11:37 567我记得看的阎宏发表在天极网上的文章上举的例子挺好的,他以一个后 ... -
jsp内置對象
2008-04-27 23:00 569一般来说,我们在使用Struts时,如果要在JSP隐式的传 ... -
spring+javamail
2008-10-08 19:02 6301.首先必须要有spring.jar, mail.jar, c ... -
Spring对IBatis的支持
2008-10-09 15:06 622Spring对IBatis提供了完善的内建支持。使用Sprin ... -
spring+ibatis实例
2008-10-09 16:18 2724首先需要以下这些jar包:commons-dbcp.jar, ... -
jboss虚拟镜像自动部署
2008-12-25 11:04 7391.修改C:\jboss-4.0.5.GA\server\de ... -
Spring配置初始化ApplicationContext
2008-12-30 11:36 5861. 在struts-config.xml里,以插件的形式 ... -
写自定义标签时标记attribute里rtexprvalue的用法
2008-12-31 14:39 489其实以前也有写过自定义标签, 但是没有注意到过<rtex ...
相关推荐
用java来写个类,获取当前的年月日,自己也可以改,获取当前系统时间
java获取年月日时分秒的方法
### Java 获取年月日的代码知识点详解 在Java编程中,获取当前日期和时间是非常常见的需求之一。在给定的代码片段中,我们能够看到一个简单的实现方式来获取当前的年、月、日以及时间等信息。下面我们将对这段代码...
1. 获取年月日(格式:xxxx年xx月xx日) 在Java中,我们可以使用`java.util.Calendar`类来获取当前日期。这个类提供了获取日期各个部分的方法,如年份、月份、日期等。以下代码展示了如何获取当前日期并按照指定格式...
//获取日 int hour=cal.get(Calendar.HOUR);//小时 System.out.println(year); SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd"); Date parse = simpleDateFormat.parse("2019-09-08")...
import java.text.SimpleDateFormat; import java.util.Calendar; import java.util.Date; import java.util.GregorianCalendar; public class TestOutDate { public static void main(String[] args) { //method 1...
获取出生年月日工具类
Java获取当前时间年月日的方法是 Java 编程语言中一个非常重要的知识点。通过本文,我们将详细介绍如何使用 Java 获取当前时间年月日的方法,并提供相应的代码示例。 首先,我们需要了解 Java 中的日期和时间相关的...
总结起来,Java中的`Date`和`Calendar`类提供了丰富的功能来处理日期和时间,包括获取年、月、日、时、分、秒等信息,以及进行日期的格式化和计算。在实际开发中,这些工具对于处理日期相关的逻辑非常有用。
日期操作类 Long转日期 字符串毫秒转日期 格式化日期转换方法,年 月 日 时 分 秒 把格式化的日期补全 把格式化的日期转化为毫秒 获取当天凌晨,夜间整点时间毫秒 校验日期是否合法 得到n天之后的日期 得到n天之后是...
在给定的标题“输入年月日,输出那天是星期几?”中,我们面临的问题是给定一个日期,如何确定该日期对应的星期几。这个问题可以通过Java语言来解决,主要涉及到Java中的日期时间API。下面将详细介绍如何用Java实现...
在Java中处理日期和时间通常有几种方法,这里主要介绍`java.util.Date`类和`java.time`包下的相关类。不过,在这段代码中,开发者选择了一种自定义的方式来实现日期的操作。 #### 1.1 日期比较与计算天数差 **目标...
在IT行业中,尤其是在前端开发领域,"年月日三联动"是一种常见的交互设计,常见于日期选择器。这种设计使得用户在选择日期时,选择年份会自动更新月份的选项,选择月份则会进一步更新日期的选项,形成联动效果。在...
用Java获取最近12个月的名称,以具有12个元素的数组的形式返回,源查找不可用(3月份重复),现自己修改了一下,缺分啊,1分请见谅
在Java中,类似的转换可以使用`java.time.Instant`类和`java.time.format.DateTimeFormatter`类来完成。首先,用`Instant.ofEpochMilli()`方法将毫秒数转换为`Instant`对象,然后通过`DateTimeFormatter`进行格式化...
总之,Java开发中通过身份证号码获取性别、出生日期和年龄是基础但重要的技能。通过合理的设计和适当的库支持,我们可以高效、准确地完成此类任务。在BJStudy这个学习资源中,可能包含了更多关于这个主题的实例和...
网上很多资源都没有输出结果是(相差几年几个月几天的代码)希望对大家有帮助 有不足地方 望大家多多指点
标题所提到的"防iOS Datepicker滑动选择选择2月时日会自动变为28的可以获取年月日也可以单独获取年月日"是一个针对iOS DatePicker的特定问题的解决方案,它旨在防止用户在选择二月时自动跳转到28号,同时提供灵活的...
大多数编程语言都提供了内置的日期时间库,例如Python中的`datetime`模块,Java中的`java.time`包,JavaScript中的`Date`对象等。这些库提供了丰富的功能,包括创建日期、比较日期、格式化日期以及计算日期之间的...
本文将深入探讨如何在Android应用中实现“年月日时分秒”控件。 首先,让我们从默认的日期和时间选择器说起。Android系统自带了一个叫做`DatePicker`的控件,用于让用户选择日期(年、月、日)。`DatePicker`提供了...