日期时间总结 java

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));
    }
}
}
  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值