java语言中的date类及方法的用法

2024年12月04日 18:20
有5个网友回答
网友(1):

Date和Calendar是Java类库里提供对时间进行处理的类,由于日期在商业逻辑的应用中占据着很重要的地位,所以在这里想对这两个类进行一个基本的讲解,由于技术有限,不到之处请指正。

Date类顾名思义,一看就知道是和日期有关的类了,这个类最主要的作用就是获得当前时间了,然而这个类里面也具有设置时间以及一些其他的功能,可是由于本身设计的问题,这些方法却遭到众多批评,而这些遭受批评的功能都已移植到另外一个类里面,这就是今天要讲到的第二个类Calendar里面。

在讲两个类之前,这里又不能不多提一个类,那就是DateFormat类,这个类是用来格式化日期的,稍后也会讲到。

首先,让我们来看一个获取当前时间的例子:

Date date = new Date();
System.out.println(date.getTime());上面的语句首先创建了Date的一个对象,接着使用getTime方法获得当前的时间,但是注意了,输出后的结果确实一串长整型的数字,这是为什么?实际上这是系统根据当前时间计算出来的一个long型的数,至于是如何计算出来的就不在本文中讲述了,那既然这样的话又如何显示正确的时间呢?这就要利用到上面的DateFormat类了,这个类是一个基类,它有一个子类是SimpleDateFormat,具体用法请看下面的代码:

Date date = new Date();
SimpleDateFormat dateFm = new SimpleDateFormat("EEEE-MMMM-dd-yyyy");
System.out.println(dateFm.format(date));这段代码开始创建了一个Date的对象,用来获取当前时间,而重点就在于后面的SimpleDateFormat对象,这个对继承了DateFormat,利用format方法对Date对象进行格式化,然后输出,而格式的定制是由用户定制的,EEEE代表星期,MMMM代表月份,而dd代表日,yyyy代表年。使用这个方法就可以根据用户自定义的格式进行输出时间。

上面介绍了由用户自定义格式的输出时间,下面将来介绍通过JAVA类库提供的标准格式输出时间,这就要用到DateFormat类了,请看以下代码:

Date date = new Date();
DateFormat dateFm = DateFormat.getDateTimeInstance(DateFormat.SHORT,
DateFormat.SHORT);
System.out.println(dateFm.format(date));这里使用的方法和用户自定义的方法差不多,只是这里使用的是一个抽象类,由于DateFormat是一个抽象类,所以它不能通过构造函数构造对象,在这里是通过getDateTimeInstance()方法获得该对象,而所传递的参数就是DateFormat里面定义的一些常量,系统根据这些常量输出当前时间,由于这里使用的是getDateTimeInstance方法,所以将传递两个常量参数,用来分别格式化日期和当前的时间。

上面讲述了如何获得系统时间以及如何格式化输出,那如果想获取或者设置时间当中的某一部分又该如何呢?例如年,月,日。这就要靠Calendar这个类了,这个类也是一个抽象类,它有一个子类GregorianCalendar,接下来我会利用这个子类来演示这个过程,请看以下代码:

DateFormat dateFormat = DateFormat.getDateInstance(DateFormat.FULL);

GregorianCalendar cal = new GregorianCalendar();

cal.setTime(new Date());

System.out.println("System Date: " + dateFormat.format(cal.getTime()));

cal.set(GregorianCalendar.DAY_OF_WEEK,GregorianCalendar.FRIDAY);
System.out.println("After Setting Day of Week to Friday: " +
dateFormat.format(cal.getTime()));
这段代码当中,首先创建了一个DateFormat对象进行格式设置,接着创建了一个GregorianCalendar对象cal,接着使用cal.setTime()方法设置cal对象中的时间为当前时间,然后通过format格式化由cal.getTime()返回的时间进行输出,后面利用set方法设置cal的日期为当前星期的FRIDAY,此时cal中存储的时间就是这个星期五的该时刻,而后面利用format格式化输出,假如当前时间为2005年1月27日星期4的11点30分,那么最后将那句将会输出2005年1月28日星期5的11点30分。

网友(2):

写进数据库的话那也得看你用什么数据库了
oracle数据库中好像有个to_date('****-**-**','yy-mm-dd')方法,这个方法可以用来对数据库进行查询和更新,只要把*部分换成你自己想写到数据库中的字符串就行,你可以到网上查查,有关于to_date方法的使用,当时我做项目的时候也是没见过这个方法,自己从网上查出来的。

网友(3):

SimpleDateFormat sdf=new SimpleDateFormat("yy-mm-dd hh:MM:ss");
Date d=new Date();
Syetem.out.println(sdf.format(d));

网友(4):

SimpleDateFormat sdf=new SimpleDateFormat("yy-mm-dd hh:MM:ss");
sdf.format(d)
d.toLocaleString()

try {
date=dd.parse(String d);
} catch (ParseException e) {
e.printStackTrace();
}

网友(5):

一、Date类型的初始化
1、 Date(int year, int month, int date); 直接写入年份是得不到正确的结果的。 因为java中Date是从1900年开始算的,所以前面的第一个参数只要填入从1900年后过了多少年就是你想要得到的年份。 月需要减1,日可以直接插入。 这种方法用的比较少,常用的是第二种方法。
2、 这种方法是将一个符合特定格式,比如yyyy-MM-dd,的字符串转化成为Date类型的数据。 首先,定义一个Date类型的对象 Date date = null; 再定义一个String类型的符合格式的字符串 String dateStr = "2010-9-10"; 把这个字符串进行拆分 String[ ] dateDivide = dateStr.split("-"); 把年月日分别取出,赋给Calendar,用 Calendar的getTime();取得日期再赋给date。
import java.util.Calendar;
import java.util.Date;

public class Main4 {

/**
* @param args
*/
public static void main(String[] args) {
Date date=null;
String dateStr="2010-9-10";
String[] dateDivide=dateStr.split("-");
if(dateDivide.length==3){
int year = Integer.parseInt(dateDivide [0].trim());//去掉空格
int month = Integer.parseInt(dateDivide [1].trim());
int day = Integer.parseInt(dateDivide [2].trim());
Calendar c = Calendar.getInstance();//获取一个日历实例
c.set(year, month-1, day);//设定日历的日期
date = c.getTime();
}
System.out.println(date);
}

}
二、Date类型的比较
Date a;
Date b;
假设现在你已经实例化了a和b
a.after(b)返回一个boolean,如果a的时间在b之后(不包括等于)返回true
b.before(a)返回一个boolean,如果b的时间在a之前(不包括等于)返回true
a.equals(b)返回一个boolean,如果a的时间和b相等返回true
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;

public class Main4 {

/**
* @param args
*/
public static void main(String[] args) {
//Date date=null;
//String dateStr="2010-9-10";
//String[] dateDivide=dateStr.split("-");
//if(dateDivide.length==3){
// int year = Integer.parseInt(dateDivide [0].trim());//去掉空格
// int month = Integer.parseInt(dateDivide [1].trim());
// int day = Integer.parseInt(dateDivide [2].trim());
// Calendar c = Calendar.getInstance();//获取一个日历实例
// c.set(year, month-1, day);//设定日历的日期
// date = c.getTime();
//}
// System.out.println(date);
//Date类型常用的操作函数
//1.-----计算某一个月份的最大天数
Calendar calendar=Calendar.getInstance();
//使用set方法之前必须先clear一下,否则很多信息会继承自系统当前时间
//calendar.clear();
//calendar.set(Calendar.YEAR,2018);
//calendar.set(Calendar.MONTH,3-1);
//int day=calendar.getActualMaximum(Calendar.DAY_OF_MONTH);
// 2.------Calendar和Date的转化
//-----Calendar转化为Date--
Date date=calendar.getTime();
System.out.println(date);//Sat Mar 24 11:39:55 CST 2018
//-----Date转化为Calendar--
Date date1=new Date();
Calendar calendar1=Calendar.getInstance();
calendar1.setTime(date1);
//3.----计算一年中的第几星期是几号
SimpleDateFormat df=new SimpleDateFormat();
Calendar calen=Calendar.getInstance();
calen.set(Calendar.YEAR,2018);
calen.set(Calendar.WEEK_OF_YEAR,4);
calen.set(Calendar.DAY_OF_WEEK,4);
System.out.println(df.format(calen.getTime()));
//add方法
SimpleDateFormat dff=new SimpleDateFormat("yyyy-MM-dd");
Calendar calll=Calendar.getInstance();
calll.set(Calendar.YEAR,2018);
calll.set(Calendar.MONTH,4);
calll.set(Calendar.DAY_OF_MONTH,24);
calll.add(Calendar.DATE,-4);
Date dateee=calll.getTime();
System.out.println(dff.format(dateee));
calll.add(Calendar.DAY_OF_MONTH,-4);
//calll.add(Calendar.DATE,-4); 相等
Date datee1=calll.getTime();
System.out.println(dff.format(datee1));
}

}