java常用类(2)

三、时间处理相关类

Date类:计算机世界把1970年1月1号定为基准时间,每个度量单位是毫秒(1秒的千分之一),用long类型的变量表示时间。

Date分配Date对象并初始化对象,以表示自从标准基准时间(称为“历元”(epoch),即1970年1月1日08:00:00GMT)以来的指定毫秒数。

示例:

package cn.tanjianjie.test;
import java.util.Date;
/**
* 测试Date类的常见用法
*/
public class TestDate {
public static void main(String[] args){
//获得当前电脑时刻
Date d=new Date();
System.out.println(d);

//获得毫秒数
Date d1=new Date(2000);
System.out.println(d1);

System.out.println(d.getTime());//返回自1970年1月1日08:00:00GMT以来此Date对象表示的毫秒数

Date d2=new Date();
System.out.println(d2.getTime());
System.out.println(d2.after(d));//d2>d=true;d2<d=false

Date d3=new Date(2020-1900,3,10);//表示2020年4月10日
System.out.println(d3);
}
}
运行结果:

DateFormat类的作用:

把时间对象转化成指定格式的字符串。反之,把指定格式的字符串转化成时间对象。
DateFormat是一个抽象类,一般使用它的子类SimpDateFormat类来实现。

示例:
package cn.tanjianjie.test;
import java.text.ParseException;
import java.util.Date;
import java.text.SimpleDateFormat;

public class DateFormat {
public static void main(String[] args) throws ParseException {
//把时间对象按照“格式字符串指定的格式”转换成相应的字符串
SimpleDateFormat df= new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
String str=df.format(new Date(4000000));
System.out.println(str);

//把字符串对象按照“格式字符串指定的格式”转换成相应的时间对象
SimpleDateFormat df2= new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
Date date=df2.parse("2019-01-26 10:30:34");
System.out.println(date);
        //输出今天是这个月中第几天
SimpleDateFormat df3= new SimpleDateFormat("D");
String str3=df3.format(new Date());
System.out.println(str3);
    }
}
运行结果:

Calender日历类:

Calender类是一个抽象类,为我们提供了关于日期计算的相关功能,比如:年、月、日、时、分、秒的展示与计算。

GregorianCalender是Canlender的一个子类,提供了世界上大多数国家、地区使用的标准日历系统。

注意:月份的表示,一月为0,二月为1,以此类推十二月为11。

示例:

package cn.tanjianjie.test;
import java.util.Calendar;
import java.util.Date;
import java.util.GregorianCalendar;

public class TestCalendar {
public static void main(String[] args) {
//获得日期相关元素
Calendar calendar = new GregorianCalendar(2019, 1, 26, 10, 30, 34);
int year = calendar.get(calendar.YEAR);
int month = calendar.get(calendar.MONTH);
int day = calendar.get(calendar.DATE);//也可以使用DAY_OF_MONTH.
int weekday = calendar.get(calendar.DAY_OF_WEEK);//星期几。1-7.1表示星期天,2表示星期一,以此类推7表示星期六

System.out.println(year);
System.out.println(month);
System.out.println(day);
System.out.println(weekday);

//设置日期相关元素
Calendar c2 = new GregorianCalendar();
c2.set(Calendar.YEAR, 2019);
System.out.println(c2);

//日期的计算
Calendar c3 = new GregorianCalendar();
c3.add(Calendar.DAY_OF_WEEK, -2);//星期中往前两天
System.out.println(c3);

//日期对象和时间对象的转化
Date d4 = c3.getTime();
Calendar c4 = new GregorianCalendar();
c4.setTime(new Date());//时间对象转化成日期对象

printCalendar(c4);
}
public static void printCalendar(Calendar c){
//打印:2019年01月26日 11:23:29 周六
int year=c.get(Calendar.YEAR);
int month=c.get(Calendar.MONTH);
int date=c.get(Calendar.DAY_OF_MONTH);
int dateweek=c.get(Calendar.DAY_OF_WEEK);
String dayweek2=dateweek==0?"日":dateweek+"";
int hour=c.get(Calendar.HOUR);
int minute=c.get(Calendar.MINUTE);
int second=c.get(Calendar.SECOND);

System.out.println(year+"年"+month+"月"+date+"日"+hour+"时"+minute+"分"+second+"秒"+" 周"+dayweek2);
}
}
运行结果:

可视化日历程序练习:

package cn.tanjianjie.test;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.GregorianCalendar;
import java.util.Scanner;

/**
* 可视化日历程序
* @author Gsan
*/
public class TestCalendar2 {
public static void main(String[] args) throws ParseException {
System.out.println("格式为:2019-2-6");
Scanner scanner=new Scanner(System.in);
String str=scanner.nextLine();

SimpleDateFormat df=new SimpleDateFormat("yyy-MM-dd");
Date date=df.parse(str);//把字符串对象转换成时间对象
Calendar c=new GregorianCalendar();//获得日期元素
c.setTime(date);

System.out.println("日 一 二 三 四 五 六");

int day=c.get(Calendar.DAY_OF_MONTH);//获得日期
int days=c.getActualMaximum(Calendar.DATE);//取到最大一天,防止后面接下一月的最大天数

c.set(Calendar.DAY_OF_MONTH,1);

//日历前面的空格,方便接上一个月
for(int i=0;i<c.get(Calendar.DAY_OF_WEEK)-1;i++){
System.out.print(" ");
}

for(int i=1;i<=days;i++){//获得一个月的时间29就是29,28就是28,30就是30,31就是31
if(day==c.get(Calendar.DAY_OF_MONTH)){//当天加*号
System.out.print(c.get(Calendar.DAY_OF_MONTH)+"* ");
}else{
System.out.print(c.get(Calendar.DAY_OF_MONTH)+" ");
}
if(c.get(Calendar.DAY_OF_WEEK)==Calendar.SATURDAY){
System.out.println();//换行
}
c.add(Calendar.DAY_OF_MONTH,1);//每打印一次就加一
}
}
}

运行结果:












原文地址:https://www.cnblogs.com/Gsan/p/10325446.html