JAVA进阶(九)时间处理类

前言

      前面学些了可变字符序列StringBuilder以及StringBuffer类,本章将继续学习常用类事件处理类

范例

1.时间的概念

在java中,我们用long类型数据表示每一个时刻的时间,单位为毫秒,以1970年1月1日 00:00:00为基点进行计算。

如果表示现在的时刻,则可以用long currTime = System.currentTimeMillis();获取当前时间值。

2.Date类

该类位于java.util包下,需要显示引入指定类。

(1)构造方法,我们可以看到,只有两个构造方法在用,一般推荐使用Calendar类

JAVA进阶(九)时间处理类_第1张图片

(2)常用方法(大部分方法已经过时,推荐使用Calendar类)

  • public boolean after(Date when):判断时间是否在指定时间when之后
  • public boolean before(Date when):判断时间是否在指定时间when之前

JAVA进阶(九)时间处理类_第2张图片

3.SimpleDateFormat类

该类位于java.text包下,需要显示的引用才能够使用。该类用来对时间进行格式化处理,提供字符串形式和时间格式的相互转化

(1)构造方法(一般用第二个)

JAVA进阶(九)时间处理类_第3张图片

(2)pattern的概念

pattern即模式,表示时间一般用形如yyyy-MM-dd HH:mm:ss的形式表示模式,当然还有其他模式,模式字符集如下:

JAVA进阶(九)时间处理类_第4张图片

(3)常用方法

  • public final String format(Date date):将一个Date类型转化为String

JAVA进阶(九)时间处理类_第5张图片

  • public Date parse(String source):将String类型的时间转化为Date

JAVA进阶(九)时间处理类_第6张图片

4.Calendar类

 该类位于java.util包下,需要显式的引用该类才能使用。

(1)常量

该类拥有诸多常量,如DATE、YEAR、DAY_OF_WEEK等等,这些常量类的内容请读者自行查询API文档进行了解

(2)常用方法

  • public static Calendar getInstance();由于Calendar为抽象类,无法实例化,需通过该方法返回一个子类实例化对象

JAVA进阶(九)时间处理类_第7张图片

  • public void add(int field,int amount):指定时间新增几日,几月,几年等等

JAVA进阶(九)时间处理类_第8张图片

  • public int get(int field):返回指定时间的年、月、日等等数值

JAVA进阶(九)时间处理类_第9张图片

  • public void set(int field,int value):设置指定年、月、日等等

JAVA进阶(九)时间处理类_第10张图片

  • public final void setTime(Date date):将Date类型的数据设置进Calendar对象
  • public final Date getTime();将Calendar对象转化为Date对象

JAVA进阶(九)时间处理类_第11张图片

其他方法请读者自行阅读API进行深入的理解。

小程序:编写java代码构建日历,将用户输入的日期,以*的标记进行显示

JAVA进阶(九)时间处理类_第12张图片

示例代码如下:

package com.jwang.test;

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.Scanner;

/**
 * 日历交互小程序
 * @author jwang
 *
 */
public class Test{

	public static void main(String[] args) throws ParseException {
		Scanner scan = new Scanner(System.in);
		System.out.println("请输入日期(格式为yyyy-MM-dd):");
		String dateStr = scan.nextLine();
		Date date = new SimpleDateFormat("yyyy-MM-dd").parse(dateStr);
		//获取当前时间
		Calendar cal = Calendar.getInstance();
		cal.setTime(date);
		//获取当前日期
		int day = cal.get(Calendar.DAY_OF_MONTH);
		//获取当前月份的天数
		int maxDay = cal.getActualMaximum(Calendar.DAY_OF_MONTH);
		//打印日历表头
		System.out.println("===================="+cal.get(Calendar.YEAR)+"年"
		+(cal.get(Calendar.MONDAY)+1)+"月====================");
		System.out.println("一\t二\t三\t四\t五\t六\t日\t");
		
		//判断当月1日是星期几
		cal.set(Calendar.DAY_OF_MONTH, 1);
		//星期日为1,星期一是2...以此类推
		int weekDay = cal.get(Calendar.DAY_OF_WEEK);
		for (int i = 1; i < weekDay-1; i++) {
			System.out.print("\t");
		}
		for (int i = 1; i <= maxDay; i++) {
			//判断是否是当前日期
			if(cal.get(Calendar.DAY_OF_MONTH) == day){
				System.out.print(cal.get(Calendar.DAY_OF_MONTH)+"*\t");
			}else {
				System.out.print(cal.get(Calendar.DAY_OF_MONTH)+"\t");
			}
			//如果是星期日则换行
			if(cal.get(Calendar.DAY_OF_WEEK) == Calendar.SUNDAY){
				System.out.println();
			}
			cal.add(Calendar.DATE, 1);
		}
		//关闭资源
		scan.close();
	}
}

 

你可能感兴趣的:(Java)