时间类

Date是核心类,Calendar日历类,DateFormat时间格式。

关于后期开发使用涉及时间类的操作可以引入相关的jar包Joda-Time,具体使用请参照https://blog.csdn.net/moakun/article/details/80591161

Date

long类型的值表现时间,1秒等于1千毫秒,从1970 年 1 月 1 日 00:00:00(值为0)开始计算。获取现在时间毫秒数使用System.currentTimeMillis()。

常用就两个方法:

System.out.println(new Date());//获取现在时间 Thu Jan 24 12:28:15 CST 2019  
System.out.println(new Date().getTime());//获取现在时间毫秒数 1548304095064

DateFormat和SimpleDateFormat

作用:实现字符串和时间对象的相互转换。

DateFormat是抽象类,具体的实现通过子类SimpleDateFormat实现,时间对象转字符串format(),字符串转时间parse()。

示例:

package com.itcode.demo4;  


import java.text.*;  
import java.util.Date;  

/** 
 * @Auther: 成都码到功成学员 
 * @Description: 
 * 时间测试 
 */  
public class TestTime {  
    public static void main(String[] args) throws ParseException {  
        DateFormat df = new SimpleDateFormat("yyyy:MM:dd hh:mm:ss");  
        // 时间对象转字符串  
        System.out.println(df.format(new Date().getTime()));  
        // 字符串转时间对象  
        System.out.println(df.parse("1994:11:23 23:45:13"));  
        // 获取当前日期是今年的第几天。  
        DateFormat df2 = new SimpleDateFormat("d");  
        System.out.println(df2.format(new Date()));  
    }  
}

效果:

Calendar

介绍: Calendar是抽象类,它的具体子类是GregorianCalendar,提供世界上大多数国家/地区的标准日历系统。

示例:

package com.itcode.demo4;  


import java.text.DateFormat;  
import java.text.ParseException;  
import java.text.SimpleDateFormat;  
import java.util.Calendar;  
import java.util.Date;  
import java.util.GregorianCalendar;  

/** 
 * @Auther: 成都码到功成学员 
 * @Description: 
 * 时间测试 
 */  
public class TestTime2 {  
    public static void main(String[] args) throws ParseException {  
        Calendar c = new GregorianCalendar(2019,02,26,16,34,68);  
        System.out.println(c.get(Calendar.YEAR));  
        System.out.println(c.get(Calendar.MONTH));  
        System.out.println(c.get(Calendar.DAY_OF_YEAR));  
        System.out.println(c.get(Calendar.DAY_OF_MONTH));  
        System.out.println(c.get(Calendar.DAY_OF_WEEK));  

        // 设置日期  
        Calendar c1 = new GregorianCalendar();  
        c1.set(Calendar.YEAR, 2019);  
        System.out.println(c1.get(Calendar.YEAR));  

        // 日期计算  
        Calendar c2 = new GregorianCalendar();  
        c2.add(Calendar.DATE, -150);// 往前150天  
        System.out.println(c2);  

        // 日期对象和时间对象的转换  
        Date d = c2.getTime();  
        Calendar c3 = new GregorianCalendar();  
        c3.setTime(new Date());  
        System.out.println(c2);  
        System.out.println(c3);  
        calendarM(c3);  
    }  
    // 打印时间  
    public static void calendarM(Calendar c){  
        int year = c.get(Calendar.YEAR);  
        int month = c.get(Calendar.MONTH)+1; // 1-11  
        int da = c.get(Calendar.DAY_OF_WEEK)-1; // 1-7  
        String week = da==0?"日":da+"";  
        int day = c.get(Calendar.DAY_OF_MONTH);  
        int hour = c.get(Calendar.HOUR);  
        int minute = c.get(Calendar.MINUTE);  
        int second = c.get(Calendar.SECOND);  
        System.out.println(year+"年"  
                           +month+"月"  
                           +day+"日"  
                           +hour+"时"  
                           +minute+"分"  
                           +second+"秒    "  
                           +"周"+week);  
    }  
}

效果:

可视化日历

打印可视化日历

第一个版本:

package com.itcode.demo4;  


import java.text.DateFormat;  
import java.text.ParseException;  
import java.text.SimpleDateFormat;  
import java.util.Calendar;  
import java.util.Date;  
import java.util.GregorianCalendar;  

/** 
 * @Auther: 成都码到功成学员 
 * @Description: 
 * 时间测试 
 */  
public class TestTime3 {  
    public static void main(String[] args) throws ParseException {  
        String s = "2019-09-20";  
        DateFormat df = new SimpleDateFormat("yyyy-MM-dd");  
        Date d = df.parse(s);  
        Calendar calendar = new GregorianCalendar();  
        calendar.setTime(d);  
        System.out.println("日\t一\t二\t三\t四\t五\t六");  
        // 把月起始日设置成1  
        calendar.set(Calendar.DAY_OF_MONTH, 1);  
        // 获取这个月的1日属于星期几,是几就打几个空行。  
        for(int i=0; i<calendar.get(Calendar.DAY_OF_WEEK)-1;i++){  
            System.out.print("\t");  
        }  
        int days = calendar.getActualMaximum(Calendar.DATE);  
        for(int i=1;i<= days; i++){  
            // 获取天数并输出  
            System.out.print(calendar.get(Calendar.DAY_OF_MONTH) + "\t");  
            // 如果这一天是周六,换行  
            if(calendar.get(Calendar.DAY_OF_WEEK)== Calendar.SATURDAY){  
                System.out.println();  
            }  
            calendar.add(Calendar.DATE, 1);  
        }  
    }  
}

效果:

第二个版本:

package com.itcode.demo4;  


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

/** 
 * @Auther: 成都码到功成学员 
 * @Description: 
 * 时间测试 
 */  
public class TestTime4 {  
    public static void main(String[] args) throws ParseException {  
        System.out.println("请输入时间(格式如2019-09-20):");  
        Scanner sc = new Scanner(System.in);  
        String s = sc.nextLine();  
        DateFormat df = new SimpleDateFormat("yyyy-MM-dd");  
        Date d = df.parse(s);  
        Calendar calendar = new GregorianCalendar();  
        calendar.setTime(d);  
        // 当天  
        int day = calendar.get(Calendar.DAY_OF_MONTH);  
        //获取当月实际天数  
        int days = calendar.getActualMaximum(Calendar.DATE);  
        System.out.println("日\t一\t二\t三\t四\t五\t六");  
        // 把月起始日设置成1  
        calendar.set(Calendar.DAY_OF_MONTH, 1);  
        // 获取这个月的1日属于星期几,是几就打几个空行。  
        for(int i=0; i<calendar.get(Calendar.DAY_OF_WEEK)-1;i++){  
            System.out.print("\t");  
        }  

        for(int i=1;i<= days; i++){  
            if (day == calendar.get(Calendar.DAY_OF_MONTH)){  
                // 当天天数加*并输出  
                System.out.print(calendar.get(Calendar.DAY_OF_MONTH) + "*\t");  
            }else {  
                // 获取天数并输出  
                System.out.print(calendar.get(Calendar.DAY_OF_MONTH) + "\t");  
            }  

            // 如果这一天是周六,换行  
            if(calendar.get(Calendar.DAY_OF_WEEK)== Calendar.SATURDAY){  
                System.out.println();  
            }  
            calendar.add(Calendar.DATE, 1);  
        }  
    }  
}

效果:

Last updated

Was this helpful?