时间类
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?