您的位置 首页 java

初识java—(三十六)日期处理类

7.4 日期处理类

Java提供了一系列用于处理日期、时间的类,包括创建日期、时间对象,获取系统当前日期、时间等操作。

7.4.1 Date类

Java提供了Date类来处理日期、时间,Date类既包含日期,也包含时间。

Date类从JDK1.0版本就开始存在,存在时间久远,提供的6个构造器中,已有4个建议放弃使用,目前使用的为:

Date():生成一个以系统当前时间日期为准的Date对象。

Date(long date):根据指定的long整型数来生成一个Date对象。

常用方法:

boolean after(Date when):判断日期是否在指定的日期when之后

boolean before(Date when):判断日期是否在指定的日期when之前。

int compareTo(Date one):比较两个日期大小,后面时间大于前面时间返回-1,否则返回1.

Boolean equals(Object obj):两个时间表示同一时间是返回true

long getTime():返回该对象对应long型整数,以毫秒为单位。

void setTime(long time):设置该对象的时间。

 public static void main(String[] args) throws Exception{
//创建一个当前系统时间对象
Date date1 = new Date();
//将当前线程休眠4秒钟
Thread.sleep(4000);
//休眠4秒钟后,创建date2时间对象
Date date2 = new Date();
//
System.out.println(date1.before(date2));
System.out.println(date1.after(date2));
System.out.println(date1.compareTo(date2));
date2.setTime(date1.getTime());
System.out.println(date1.equals(date2));
//看下面的情况
long time = 2000*60*60;
Date date2 = new Date(time);
System.out.pritln(date2);
//由于咱们这边是东八区,所以时间上多8个小时。所以得到的是10,而不是2。
Date类中日期和毫秒的相互转换:
Date date3 = new Date();
long time = date3.getTime();  

把一个毫秒值转换为Date

(1) 构造方法

(2) setTime(long time)方法

}

7.4.2 使用DateFormat格式化日期

DateFormat是一个抽象类,它也提供了几个工厂方法用于获取DateFormat对象。返回的都是DateFormat对象的子类实例,是同一个类型的实例。

举例1:

 public static void main(String[] args) throws Exception{
DateFormat format = DateFormat.getInstance();
System.out.println(format.getClass());
format = DateFormat.getDateInstance();
System.out.println(format.getClass());
format = DateFormat.getTimeInstance();
System.out.println(format.getClass());
}  

输出信息:class java.text.SimpleDateFormat

虽然返回的都是同一个对象类型的实例,但是根据不同的工厂方法,返回的对象在格式化时间对象时,处理不同部分的信息。

getDateInstance():返回一个日期格式器,只对日期进行格式化。

getTimeInstance():返回一个时间格式器,只对时间进行格式化。

getDateTimeInstance():返回一个日期、时间格式器,既对时间又对日期进行格式化。

getInstance():返回一个默认的系统相关的日期、时间格式器。

 public static void main(String[] args) throws Exception{
Date date = new Date();
//默认为中国常用格式
DateFormat format = DateFormat.getInstance();
System.out.println(format.format(date));
//返回日期、时间格式器国际统一标准
format = DateFormat.getDateTimeInstance();
System.out.println(format.format(date));
//返回日期格式器,同时指定格式类型,为简洁型,指定要显示哪个国家的类型
format = DateFormat.getDateInstance(DateFormat.SHORT, Locale.CHINA);
System.out.println(format.format(date));
//返回日期格式器,同时指定格式类型,为中等型,指定要显示哪个国家的类型
format = DateFormat.getDateInstance(DateFormat.MEDIUM, Locale.CHINA);
System.out.println(format.format(date));
//返回日期格式器,同时指定格式类型,为完整型,指定要显示哪个国家的类型
format = DateFormat.getDateInstance(DateFormat.LONG, Locale.CHINA);
System.out.println(format.format(date));
//返回日期格式器,同时指定格式类型,为复杂型,指定要显示哪个国家的类型
format = DateFormat.getDateInstance(DateFormat.FULL, Locale.CHINA);
System.out.println(format.format(date));
}  

7.4.3 使用SimpleDateFormat格式化日期

SimpleDateFormat是DateFormat的子类,是一种更简单的日期格式,以我们指定的格式对日期进行格式化。我们使用默认的输出时间格式并不符合我们的一种阅读习惯,而现在我们就来解决这么个问题,是否可以设置一下日期的输出样式呢?

举例1:

 public static void main(String[] args) throws Exception{
Date date = new Date();
SimpleDateFormat simple = new SimpleDateFormat("yyyy年MM月dd日 HH:mm:ss");
System.out.println(simple.format(date));
simple = new SimpleDateFormat("yyyy/MM/dd");
System.out.println(simple.format(date));
}  

这里要求你们掌握一个内容,我们在后边学习web的时候会编写登陆界面,肯定需要选择你的出生年月日,我们在选择的时候在web程序中接收的是一个字符串类型,这时候就需要我们用Java把这个字符串解析为一个日期存放在我们的数据库,而当我们再从数据中拿的时候再把日期类型的转换为字符串类型的拿来用。现在我们就考虑这么一个问题,日期格式与字符串格式之间的相互转换问题。

举例2:

 public static void main(String[] args) throws Exception{
// Date -- String
// 创建日期对象
Date d = new Date();
// 创建格式化对象
// SimpleDateFormat sdf = new SimpleDateFormat();
// 给定模式
SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日 HH:mm:ss");
// public final String format(Date date)
String s = sdf.format(d);
System.out.println(s);


//String -- Date
String str = "2008-08-08 12:12:12";
//在把一个字符串解析为日期的时候,请注意格式必须和给定的字符串格式匹配
SimpleDateFormat sdf2 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
Date dd = sdf2.parse(str);
System.out.println(dd);
}  

练习:计算一下你来到这个世界已经多少天了?

7.4.4 Calendar类

Calendar是一个抽象类,用于表示日历。因为Date类在设计上存在一些缺陷,所以Java提供Calendar类来更好的处理日期和时间。

Calendar类不能直接创建,可以通过类方法来创建一个Calendar的子类,Java本身提供了GregorianCalendar子类,通过getInstance()方法返回默认时区和语言环境获得一个日历。返回的实例就是Java提供的默认子类

举例1:

 public static void main(String[] args) throws Exception{
Calendar cal = Calendar.getInstance();
System.out.println(cal.getClass()); //class java.util.GregorianCalendar
}  

Calendar与Date都是表示日期的工具类,他们之间可以相互转换。

举例2:

 public static void main(String[] args) throws Exception{
Calendar cal = Calendar.getInstance();
Date date = cal.getTime();
System.out.println(date);
Calendar cale = Calendar.getInstance();
cale.setTime(date);
}  

Calendar类提供的常用方法:

void add(int field,int amount):根据日历的规则,为给定的日历字段添加或减去指定的时间量。

int get(int field):返回指定日历字段的值。

int getActualMaximum(int field):返回指定日历字段的可能拥有的最大值。

int getActualMinimum(int field):返回指定日历字段的可能拥有的最小值。

void roll(int field,int amout):与add方法相似,区别在于超过该字段的最大范围时,也不会向上一个字段进位。

void set(int field,int value):将给定的日历字段设置为给定值。

void set(int year,int month,int date):设置Calendar对象的年、月、日3个字段值。

void set(int year,int month,int date,int hourOfDay,int minute,int second):设置Calendar对象的年、月、日、时、分、秒6个字段的值。

 public static void main(String[] args) throws Exception{
Calendar cal = Calendar.getInstance();
System.out.println(cal.get(Calendar.YEAR)); //2014
cal.add(Calendar.MONTH, 12);
System.out.println(cal.get(Calendar.YEAR)); //2015
System.out.println("==================================");
cal = Calendar.getInstance();
System.out.println(cal.get(Calendar.YEAR)); //2014
cal.roll(Calendar.MONTH, 12);
System.out.println(cal.get(Calendar.YEAR)); //2014
System.out.println("==================================");
System.out.println(cal.getActualMaximum(Calendar.MONTH)); //11
System.out.println(cal.getActualMinimum(Calendar.MONTH)); //0
主要再来看一下,add与set方法
}
  

文章来源:智云一二三科技

文章标题:初识java—(三十六)日期处理类

文章地址:https://www.zhihuclub.com/175429.shtml

关于作者: 智云科技

热门文章

网站地图