日期时间
- 1 Date基础
- 2 SimpleDateFormat
- 3 currentTimeMillis
- 4 Calendar
- 5 时间转化
- 5.1 date 时间戳
- 5.2 date String
- 5.3 cal date
- 6 其他
- 7 练习题
- 题1
1 Date基础
.getYear()
.getMonth() + 1
.getDate() 几号
.toLocaleString() 转换为本地时区
getTime():返回自1970年1月1日00:00:00 GMT以来的毫秒数
// 获取当前时间:
Date date = new Date();
// 获取年份
int year = date.getYear() + 1900;
System.out.println("今天的年份:"+year); // 必须加上1900 今天的年份:2024
System.out.println("今天的年份:" + date.getYear()); // 必须加上1900 今天的年份:124
// 获取月份
System.out.println("今天的月份:" + date.getMonth() + 1); // 0~11,必须加上1
// 获取日
System.out.println("今天是几号:" + date.getDate()); // 1~31,不能加1
//今天是
// 转换为本地时区:
System.out.println("今天的年份:" + date.toLocaleString()); //今天的年份:2024年4月12日 下午4:09:44
// 转换为String:
//System.out.println("今天的年份:" + date.toString());
// 转换为GMT时区:
//System.out.println("今天的年份:" + date.toGMTString());
2 SimpleDateFormat
yyyy-MM-dd HH-mm-ss
yyyy/MM/dd
yyyy:MM:dd
// 获取当前时间:
Date date = new Date();
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
System.out.println(sdf.format(date)); //2024-04-12 16:37:53
SimpleDateFormat sdf1 = new SimpleDateFormat("yyyy/MM/dd");
System.out.println(sdf1.format(date)); //2024/04/12
SimpleDateFormat sdf2 = new SimpleDateFormat("yyyy:MM:dd");
System.out.println(sdf2.format(date)); //2024:04:12
M :月份 输出格式 9
MM : 月份 输出格式 09
MMM: 月份 输出格式 September
E MMM dd, yyyy
yyyy MMM dd E
Date date = new Date();
SimpleDateFormat sdff1 = new SimpleDateFormat("E MMM dd, yyyy");
System.out.println(sdff1.format(date)); //周五 4月 12, 2024
SimpleDateFormat sdff2 = new SimpleDateFormat("yyyy MMM dd E");
System.out.println(sdff2.format(date)); //2024 4月 12 周五
3 currentTimeMillis
System.currentTimeMillis()
计算机从1970年1月1日零点(格林威治时区 / GMT + 00:00) 到现在所经历的秒数
long time= System.currentTimeMillis();
System.out.println(time); //1670677161211
Date thisTime = new Date(time);
System.out.println(thisTime); // Fri Apr 12 16:55:18 CST 2024
4 Calendar
Calendar.getInstance()
.YEAR
.MONTH) + 1
.DAY_OF_MONTH
.DAY_OF_WEEK) -1
.HOUR_OF_DAY
.MINUTE
.SECOND
.MILLISECOND 毫秒
注意下 1~7 分别表示周日、周一…,周六 。
获取当前时间:
// 获取当前时间:
Calendar c = Calendar.getInstance();
int y = c.get(Calendar.YEAR); //年
int m = c.get(Calendar.MONTH) + 1; // 月
int d = c.get(Calendar.DAY_OF_MONTH); // 日
int w = c.get(Calendar.DAY_OF_WEEK) -1; // 星期
int hh= c.get(Calendar.HOUR_OF_DAY); // 小时
int mm = c.get(Calendar.MINUTE); // 分
int ss = c.get(Calendar.SECOND); // 秒
int ms = c.get(Calendar.MILLISECOND); // 毫秒
System.out.println(y + "-" + m + "-" + d + " " + w + " " +
hh + ":" + mm + ":" + ss + "." + ms); // 例如 2024-4-12 5 17:10:48.995
.set(Calendar.YEAR, 2025)
sdf.format(c.getTime())
设置时间:
// 当前时间:
Calendar c = Calendar.getInstance();
// 清除所有:
c.clear();
// 设置2019年:
c.set(Calendar.YEAR, 2025);
// 设置9月:注意8表示9月:
c.set(Calendar.MONTH, 8);
// 设置2日:
c.set(Calendar.DATE, 2);
// 设置时间:
c.set(Calendar.HOUR_OF_DAY, 21);
c.set(Calendar.MINUTE, 22);
c.set(Calendar.SECOND, 23);
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
System.out.println(sdf.format(c.getTime())); //2025-09-02 21:22:23
5 时间转化
5.1 date 时间戳
时间戳->date
long s = System.currentTimeMillis();
System.out.println(s); // 1712915178721
Date dattt = new Date(s);
System.out.println(dattt); // Fri Apr 12 17:46:18 CST 2024
.getTime()
date->时间戳
Date date= new Date();
long time = date.getTime();
System.out.println(time); //1712915726040
5.2 date String
df.parse(str)
String->Date对象
SimpleDateFormat df = new SimpleDateFormat("yyyy年MM月dd日");
String str = "2022年02月20日";
Date date = df.parse(str);
System.out.println(date); // Sun Feb 20 00:00:00 CST 2022
.format(date):将日期转换成字符串
Date-> String
Date datee = new Date();
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String str = sdf.format(datee);
System.out.println(str+123); //2024-04-12 18:23:08123
5.3 cal date
cal.getTime()
calendar->Date
Calendar cal = Calendar.getInstance();
Date date = cal.getTime();
System.out.println(date); // Sun Feb 20 00:00:00 CST 2022
.setTime
Date->calendar
Date datee =new Date();
Calendar cal=Calendar.getInstance();
cal.setTime( datee );
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
System.out.println(sdf.format(cal.getTime())); //2024-04-12 18:27:51
6 其他
calendar.getTimeInMills()
7 练习题
题1
在控制台输入一个日期,即可跳转到该月份,输入的那一天,用*号代替
System.out.println("请输入日期:格式yyyy--MM--dd");
Scanner scanner=new Scanner(System.in);
String str=scanner.nextLine();
System.out.println(" 一 二 三 四 五 六 日");
DateFormat dateFormat=new SimpleDateFormat("yyyy--MM--dd");
//将输入日期字符串转换成Date类型,作为calendar的时间参数
Date date = dateFormat.parse(str);
Calendar calendar=Calendar.getInstance();
calendar.setTime(date);
//获取输入日期的year,month,day.
int year=calendar.get(Calendar.YEAR);
int month=calendar.get(Calendar.MONTH)+1;
int day=calendar.get(Calendar.DAY_OF_MONTH);
//获取输入日期的当月的第一天,并将calendar的时间设置为该月1号
Date date2=dateFormat.parse(year+"--"+month+"--"+"1");
calendar.setTime(date2);
//月份为1,3,5,7,8,10,12
if(month==1||month==3||month==5||month==7||month==8||month==10||month==12){
show(calendar,day,31);
}else if(month==4||month==6||month==9||month==11){//月份为4,6,9,11
show(calendar,day,30);
}else if(isLeap(year)){//2月份,是闰年
show(calendar,day,29);
}else{//2月份,是平年
show(calendar,day,28);
}
}
/**
* 判断输入的年份是否是闰年,闰年返回true,平年返回false.
* @param year
* @return
*/
public static boolean isLeap(int year){
if((year%400==0)||(year%4==0&&year%100!=0)){
return true;
}else{
return false;
}
}
/**
*
* @param calendar calendar的时间为该月1号
* @param day 输入日期的day值
* @param days 一个月总共有多少天
*/
public static void show(Calendar calendar,int day,int days){
//startDay 表示一个月的第一天是星期几
int startDay=calendar.get(Calendar.DAY_OF_WEEK);
//realDay表示实际是星期几
int realDay=0;
//startDay==1,是周日.
if(startDay==1){
realDay=7;
for(int i=1;i<=6;i++){
System.out.print(" ");
}
}else{//startDay !=1,不是周日的情况.
//realDay表示真实的周几,比如说,startDay=2,其实是周一;startDay=3,其实是周二.
realDay=startDay-1;
for(int i=1;i<realDay;i++){
System.out.print(" ");
}
}
for(int i=1;i<=days;i++){
//换行操作
if((i+realDay)%7==1){
if(i==day){
System.out.print(" *");
}else{
System.out.print(String.format("%4d",i));
}
System.out.println("");
}else{
if(i==day){
System.out.print(" *");
}else{
System.out.print(String.format("%4d",i));
}
}
}