您当前的位置:首页 > 互联网教程

Java中如何设置Date对象的年月日

发布时间:2025-05-23 18:43:22    发布人:远客网络

Java中如何设置Date对象的年月日

一、Java中如何设置Date对象的年月日

包。在这个包中,Java提供了一些实用的方法和数据结构。例如,Java提供日期(Data)类、日历(Calendar)类来产生和获取日期及时间,提供随机数(Random)类产生各种类型的随机数,还提供了堆栈(Stack)、向量(Vector)、位集合(Bitset)以及哈希表(Hashtable)等类来表示相应的数据结构。

图1.1给出了java.util包的基本层次结构图。下面我们将具体介绍其中几个重要的类。

│└java.util.GregorianCalendar

┌普通类┤├java.util.ListResourceBundle

││└java.util.PropertyResourceBundle

Java.util┤└java.util.TimeZone

├接口┤java.util.EventListener

│┌java.util.EmptyStackException

└异常类┤java.util.MissingResourceException

│java.util.NoSuchElementException

└java.util.TooManyListenersException

图1.1 java.util包的基本层次结构

Java在日期类中封装了有关日期和时间的信息,用户可以通过调用相应的方法来获取系统时间或设置日期和时间。Date类中有很多方法在JDK1.0公布后已经过时了,在8.3中我们将介绍JDK1.0中新加的用于替代Date的功能的其它类。

在日期类中共定义了六种构造函数。

创建的日期类对象的日期时间被设置成创建时刻相对应的日期时间。

例 Date today=new Date();//today被设置成创建时刻相对应的日期时间。

long型的参数date可以通过调用Date类中的static方法parse(String s)来获得。

例 long l=Date.parse("Mon 6 Jan 1997 13:3:00");

//day中时间为1997年 1月6号星期一,13:3:00。

按字符串s产生一日期对象。s的格式与方法parse中字符串参数的模式相同。

例 Date day=new Date("Mon 6 Jan 1997 13:3:00");

//day中时间为1997年1月6号星期一,13:3:00.

(4)public Date(int year,int month,int date)

(5)public Date(int year,int month,int date,int hrs,int min)

(6)public Date(int year,int month,int date,int hrs,int min,int sec)

year的值为:需设定的年份-1900。例如需设定的年份是1997则year的值应为97,即1997-1900的结果。所以Date中可设定的年份最小为1900;

month的值域为0~11,0代表1月,11表代表12月;

hrs的值域在0~23之间。从午夜到次日凌晨1点间hrs=0,从中午到下午1点间hrs=12;

//day中的时间为:04-Apr-11 12:00:00 AM

另外,还可以给出不正确的参数。

例设定时间为1910年2月30日,它将被解释成3月2日。

Date day=new Date(10,1,30,10,12,34);

System.out.println("Day's date is:"+day);

//打印结果为:Day's date is:Web Mar 02 10:13:34 GMT+08:00 1910

下面我们给出一些Date类中常用方法。

(1)public static long UTC(int year,int month,int date,int hrs. int min,int sec)

该方法将利用给定参数计算UTC值。UTC是一种计时体制,与GMT(格林威治时间)的计时体系略有差别。UTC计时体系是基于原子时钟的,而GTMT计时体系是基于天文学观测的。计算中使用的一般为GMT计时体系。

(2)public static long parse(String s)

该方法将字符串s转换成一个long型的日期。在介绍构造方法Date(long date)时曾使用过这个方法。

(3)public void setMonth(int month)

这两个方法分别为设定和获取月份值。

获取的月份的值域为0~11,0代表1月,11代表12月。

(6)public String toLocalString()

(7)public String toGMTString()

将给定日期对象转换成不同格式的字符串。它们对应的具体的格式可参看例子8.1。

(8)public int getTimezoneOffset()

该方法用于获取日期对象的时区偏移量。

例8.1中对上面介绍的Date类中的基本方法进行了具体的应用,并打印了相应的结果。由于使用了一些过时的方法,所以编译时会有警告信息。另外,由于本例中的时间表示与平台有关,不同的JDK版本对此处理不完全相同,因此不同版本的JDK执行本例的结果可能有细微差异。

public static void main(String args[]){

//today中的日期被设成创建时刻的日期和时间,假设创建时刻为1997年3月

System.out.println("Today's date is"+today);

//返回一般的时间表示法,本例中结果为

//Today's date is Fri May 23 17:51:54 1997

System.out.println("Today's date(Internet GMT)is:"

//返回结果为GMT时间表示法,本例中结果为

//Today's date(Internet GMT)is: 23 May 1997 09:51:54:GMT

System.out.println("Today's date(Locale) is:"

//返回结果为本地习惯的时间表示法,结果为

//Today's date(Locale)is:05/23/97 17:51:54

System.out.println("Today's year is:"+today.getYear());

System.out.println("Today's month is:"+(today.getMonth()+1));

System.out.println("Today's date is:"+today.getDate());

//调用Date类中方法,获取年月日的值。

//下面调用了不同的构造方法来创建Date类的对象。

Date day1=new Date(100,1,23,10,12,34);

System.out.println("Day1's date is:"+day1);

Date day2=new Date("Sat 12 Aug 1996 13:3:00");

System.out.println("Day2's date is:"+day2);

long l= Date.parse("Sat 5 Aug 1996 13:3:00 GMT+0800");

System.out.println("Day3's date(GMT)is:"+day3.toGMTString());

System.out.println("Day3's date(Locale)is:"

System.out.println("Day3's time zone offset is:"

运行结果(JDK1.3版,与原文不同,原文是JDK1.0版):

E:\java\tutorial\java01>java DateApp

Today's date is Thu Dec 27 17:58:16 CST 2001

Today's date(Internet GMT)is:27 Dec 2001 09:58:16 GMT

Today's date(Locale) is:2001-12-27 17:58:16

Day1's date is: Wed Feb 23 10:12:34 CST 2000

Day2's date is: Fri Aug 12 13:03:00 CST 1996

Day3's date(GMT)is: 5 Aug 1996 05:03:00 GMT

Day3's date(Locale)is: 1996-8-5 13:03:00

Day3's time zone offset is:-480

E:\java\tutorial\java01>

在早期的JDK版本中,日期(Date)类附有两大功能:(1)允许用年、月、日、时、分、秒来解释日期:(2)允许对表示日期的字符串进行格式化和句法分析。在JDK1.1中提供了类Calendar来完成第一种功能,类DateFormat来完成第二项功能。dateFormat是java.text包中的一个类。与Date类有所不同的是,DateFormat类接受用各种语言和不同习惯表示的日期字符串。本节将介绍java.util包中的类Calendar及其它新增加的相关的类。

类Calendar是一个抽象类,它完成日期(Date)类和普通日期表示法(即用一组整型域如YEAR,MONTH,DAY,HOUR表示日期)之间的转换。

由于所使用的规则不同,不同的日历系统对同一个日期的解释有所不同。在JDK1.1中提供了Calendar类一个子类GregorianCalendar??它实现了世界上普遍使用的公历系统。当然用户也可以通过继承Calendar类,并增加所需规则,以实现不同的日历系统。

第GregorianCalendar继承了Calendar类。本节将在介绍类GregorianCalendar的同时顺带介绍Calendar类中的相关方法。

类GregorianCalendar提供了七种构造函数:

创建的对象中的相关值被设置成指定时区,缺省地点的当前时间,即程序运行时所处的时区、地点的当前时间。

(2)public GregorianCalendar(TimeZone zone)

创建的对象中的相关值被设置成指定时区zone,缺省地点的当前时间。

(3)public GregorianCalendar(Locale aLocale)

创建的对象中的相关值被设置成缺省时区,指定地点aLocale的当前时间。

(4)public GregorianCalendar(TimeZone zone,Local aLocale)

创建的对象中的相关值被设置成指定时区,指定地点的当前时间。

上面使用到的类TimeZone的性质如下:

TimeZone是java.util包中的一个类,其中封装了有关时区的信息。每一个时区对应一组ID。类TimeZone提供了一些方法完成时区与对应ID两者之间的转换。

(Ⅰ)已知某个特定的ID,可以调用方法

public static synchronized TimeZone getTimeZone(String ID)

例太平洋时区的ID为PST,用下面的方法可获取对应于太平洋时区的时区对象:

TimeZone tz=TimeZone.getTimeZone("PST");

调用方法getDefault()可以获取主机所处时区的对象。

TimeZone tz=TimeZone.getDefault();

(Ⅱ)调用以下方法可以获取时区的ID

■public static synchronized String[] getavailableIDs(int rawOffset)

根据给定时区偏移值获取ID数组。同一时区的不同地区的ID可能不同,这是由于不同地区对是否实施夏时制意见不统一而造成的。

二、在java的程序里date类型怎么比较大小呀

1、两个Date类型的变量可以通过compareTo方法来比较。此方法的描述是这样的:如果参数 Date等于此 Date,则返回值 0;如果此 Date在 Date参数之前,则返回小于 0的值;如果此 Date在 Date参数之后,则返回大于 0的值。

2、Date.after()这样的方式不能比较出相等的时间。

3、Date类可以在java.util包中找到,用一个long类型的值表示一个指定的时刻。它的一个有用的构造函数是Date(),它创建一个表示创建时刻的对象。

4、getTime()方法返回Date对象的long值。在下面的程序中,我使用Date()构造函数创建一个表示程序运行时刻的对象,并且利用getTime()方法找到这个日期代表的毫秒数量:

5、public static void main(String[] args){

6、System.out.println("Value is"+ nowLong);

7、参考资料来源:百度百科——java日期函数

三、Java英文日期格式转换yyyy-MM-dd格式

1、在后端开发中,我们常与日期类型打交道。在众多格式中,基本的“年-月-日(yyyy-MM-dd)”是我们最常见的。但有时,我们会遇到英文日期格式,例如“EEE MMM dd HH:mm:ss z yyyy”,这可能让人感到困惑,因为我们通常使用的转换方法针对的是“yyyy-MM-dd”格式。

2、初次遇到这种格式时,尝试使用“yyyy-MM-dd”格式进行转换可能会导致解析错误。为解决这个问题,我们需要明确英文日期格式,并在创建SimpleDateFormat对象时指定格式。原始方法使用的是默认构造器,这并不支持英文日期转换。正确的做法是使用带有格式参数的构造器,该参数为Locale.Category.FORMAT。

3、正确的SimpleDateFormat构造器参数应为:

4、通过这种方式,我们可以确保正确解析英文日期。对于字符串类型的英文日期,我们先将其转换为Date类型对象,然后使用普通的转换方法。如果是Date类型的英文日期,尝试直接使用“new SimpleDateFormat("yyyy-MM-dd")”进行转换即可。

5、总结,解决英文日期格式问题的关键在于明确格式并正确设置SimpleDateFormat。遵循上述步骤,可以轻松完成转换。文章提供了一种解决方案,但如有任何错误或缺失的信息,欢迎各位指正和补充。