Java日期常用函数,时间戳,通过年月得到时间戳(作者很认真写的)

一、Java中Date常见的get方法(大部分已经被弃用)

    Date date = new Date();
    date.getDate(); // 获取日期,当月的日期比如4月7号,得到的就是7
    date.getYear(); //获取年,获取到的年要减去1900,比如2023,得到的就是123
    date.getDay(); //获取星期,星期一为1,需要注意的是星期天获取到的为0
    date.getMonth(); //获取月,获取到的月为实际月份减1,比如4月得到的数字为3
    date.getHours(); //获取时,就是天的小时
    date.getMinutes();//获取分,当前的分钟
    date.getSeconds();// 获取秒,当前的秒

  • 自行测试程序
    public static void main(String[] args) throws Exception {
        // 定制日期格式
        SimpleDateFormat formater = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        //有一个字符串表示的日期
        String dt_1 = "2023-04-8 15:32:12";
        Date dt_2 = null;
        try {
            dt_2 = formater.parse(dt_1);
        } catch (ParseException e) {
            e.printStackTrace();
        }

        System.out.println("获取日期:"+dt_2.getDate());
        System.out.println("获取年:"+dt_2.getYear());
        System.out.println("获取月:"+dt_2.getMonth());
        System.out.println("获取星期:"+dt_2.getDay());
        System.out.println("获取时:"+dt_2.getHours());
        System.out.println("获取分:"+dt_2.getMinutes());
        System.out.println("获取秒:"+dt_2.getSeconds());
    }
* 测试结果

在这里插入图片描述

二、Date的构造方法(构造函数),不少已弃用

  1. 空构造方法,时间为当前时间
//时间为当前时间
Date date=new Date();
  1. 使用时间戳构造,时间戳的类型为Long
		Date date1=new Date();
        System.out.println(date1);
        Date date2=new Date(date1.getTime());
        System.out.println(date2);
  1. 使用年月日构造Date
//构造出来的是 1900+123年1+3月7日0点0分0秒的Date对象,也就是2023年4月7日0时0分0秒
Date date=new Date(123,3,7);
  1. 使用年月日时分构造
//构造出来的是 1900+123年1+3月7日0点0分0秒的Date对象,也就是2023年4月7日0时0分0秒
Date date=new Date(123,3,7,0,0);
  1. 使用年月日时分秒构造
//构造出来的是 1900+123年1+3月7日0点0分0秒的Date对象,也就是2023年4月7日0时0分0秒
Date date=new Date(123,3,7,0,0,0);

三、使用 GregorianCalendar 构造Date对象

  • 月份是从0开始的,0表示1月
  • 天是从1开始的,1表示1号。如果使用0,会变成上个月最后一天
//输出 1899年-12月-31日 00时:00分:00秒
//	  1900年-01月-01日 00时:00分:00秒
public static void main(String[] args) {
    Calendar calendar = new GregorianCalendar(1900, 0, 0, 0, 0, 0);
    Date date = calendar.getTime();
    System.out.println(new SimpleDateFormat("yyyy年-MM月-dd日 HH时:mm分:ss秒").format(date).toString());
    calendar.set(1900, 0, 1, 0, 0, 0);
    date = calendar.getTime();
    System.out.println(new SimpleDateFormat("yyyy年-MM月-dd日 HH时:mm分:ss秒").format(date).toString());
}

四、使用SimpleDateFormat 构造Date对象,对字符串进行处理

    public static void main(String[] args) throws Exception {
        // 定制日期格式
        SimpleDateFormat formater = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        //有一个字符串表示的日期
        String dt_1 = "2023-04-8 15:32:12";
        Date dt_2 = null;
        try {
            dt_2 = formater.parse(dt_1);
        } catch (ParseException e) {
            e.printStackTrace();
        }

        System.out.println("获取日期:"+dt_2.getDate());
        System.out.println("获取年:"+dt_2.getYear());
        System.out.println("获取月:"+dt_2.getMonth());
        System.out.println("获取星期:"+dt_2.getDay());
        System.out.println("获取时:"+dt_2.getHours());
        System.out.println("获取分:"+dt_2.getMinutes());
        System.out.println("获取秒:"+dt_2.getSeconds());
    }

五、Java中Date类型获取年月日时分秒常用的两种方法

Calendar类,需要注意的地方都写了注释

    public static void main(String[] args) throws Exception {

        Calendar calendar = Calendar.getInstance();
        calendar.setTime(new Date());					//放入Date类型数据

        System.out.println("获取年份:"+calendar.get(Calendar.YEAR));
        System.out.println("获取月份:"+calendar.get(Calendar.MONTH));   //如果是4月得到的会是3,实际大部分的使用情况需要加一
        System.out.println("获取日:"+calendar.get(Calendar.DATE));
        System.out.println("时(12小时制):"+calendar.get(Calendar.HOUR));
        System.out.println("时(24小时制):"+calendar.get(Calendar.HOUR_OF_DAY));
        System.out.println("分:"+calendar.get(Calendar.MINUTE));
        System.out.println("秒:"+calendar.get(Calendar.SECOND));
        System.out.println("一周的第几天:"+calendar.get(Calendar.DAY_OF_WEEK));   //从星期天开始算起的,星期天为第一天返回的一,星期五为第六天返回6

    }

SimpleDateFormat类

  • 时间标准化输出
//执行输出为 2024年-03月-05日 11时:10分:59秒
public static void main(String[] args) {
    System.out.println(new SimpleDateFormat("yyyy年-MM月-dd日 HH时:mm分:ss秒").format(new Date()).toString());
}
  • 获取具体的年月日,时分秒
    public static void main(String[] args) throws Exception {

        //使用当前时间做数据,new Date()
        String[] strNow1 = new SimpleDateFormat("yyyy-MM-dd").format(new Date()).toString().split("-");

        Integer.parseInt(strNow1[0]);			//获取年
        Integer.parseInt(strNow1[1]);			//获取月,4月就是返回4,不会有问题
        Integer.parseInt(strNow1[2]);			//获取日

        String[] strNow2 = new SimpleDateFormat("hh:mm:ss").format(new Date()).toString().split(":");

        Integer.parseInt(strNow2[0]);			//获取时(12小时制),小h为12小时制
        Integer.parseInt(strNow2[1]);			//获取分
        Integer.parseInt(strNow2[2]);			//获取秒

        String[] strNow3 = new SimpleDateFormat("HH:mm:ss").format(new Date()).toString().split(":");

        Integer.parseInt(strNow3[0]);			//获取时(24小时制),大H为24小时制
        Integer.parseInt(strNow3[1]);			//获取分
        Integer.parseInt(strNow3[2]);			//获取秒

    }

其他

关于时间戳的介绍

  • 时间戳是从中国时间1970年1月1日8时开始算起的,1000时间戳为1秒
//通过这个语句输出可以得到,结果(Thu Jan 01 08:00:00 CST 1970)
System.out.println(new Date(0L));

通过年和月得到时间戳的方法(作者自己写的)

    public static Long getDateByYearMonth(Integer year, Integer month) {
        // 定制日期格式
        SimpleDateFormat formater = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        //有一个字符串表示的日期
        String dt_1 = year.toString() + "-" + month.toString() + "-01 00:00:00";
        Date dt_2 = null;
        try {
            dt_2 = formater.parse(dt_1);
        } catch (ParseException e) {
            e.printStackTrace();
        }
        return dt_2.getTime();
    }

java-阴历日期和阳历日期互相转换

Java输出某一年的日历(可改成输出某年某月的日历)

@JsonFormat导致后端传给前端之后,时间对不上

  • 出问题的代码,因为如果不指定时区,将统一使用 0 时区
    @JsonFormat(shape = JsonFormat.Shape.STRING pattern = "yyyy-MM-dd HH:mmss")
    
  • 解决的代码
    @JsonFormat(shape=JsonFormatShapeSTRING pattern = "yyyy-MM-dd HH:mmss" timezone ="GMT+8"
    

参考文档

  • 8
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值