36、日期

日期处理类

package date;

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.*;

public class MyDate {
    public static void main(String[] args) {
        //一、Date
        //1、初始化: a 无参构造,放回的当前时间的时间
        //          b 有参构造,传入指定的毫秒数(距离格尼林治时间的毫秒数)
        System.out.println("1、初始化的两种形式");
        Date date01 = new Date();  //
        Date date02 = new Date(1677658832000L); //2023-03-01 16:20:32

        //2、获取日期对应的时间戳
        System.out.println("2、获取日期对应的时间戳 ms");
        System.out.println(date01.getTime());

        //3、比较是否两个日期是否相等
        System.out.println("3、比较是否两个日期是否相等");
        System.out.println(date01.equals(date02));

        //4、判断时间的先后顺序
        System.out.println("4、判断时间的先后顺序");
        System.out.println(date01.before(date02));
        System.out.println(date01.after(date02));



        //二、时区TimeZone
        TimeZone tz = TimeZone.getDefault();
        System.out.println(tz.getID());
        TimeZone beijingTz = TimeZone.getTimeZone("GMT+8:00");

        //三、国家和语言 Locale
        //其主要有两个参数: 一个是国家,一个是语言
        //中国的代码是CN, 中文语言的代码是zh
        Locale locale = Locale.getDefault();
        System.out.println(locale.toString());


        //四、Calender
        //其实日期和时间操作的主要的类,与时区和地区有关。
        //注意:
        //月份是从0开始的,需要+1
        //每周的开始是周日,所以周六是7
        System.out.println("日历类:");
        Calendar calendar = Calendar.getInstance();
        System.out.println("year:" + calendar.get(Calendar.YEAR));
        System.out.println("month:" + (calendar.get(Calendar.MONTH) + 1));
        System.out.println("day:" + calendar.get(Calendar.DAY_OF_MONTH));
        System.out.println("hour:" + calendar.get(Calendar.HOUR));
        System.out.println("minute:" + calendar.get(Calendar.MINUTE));
        System.out.println("second:" + calendar.get(Calendar.SECOND));
        System.out.println("dayofweek:" + (calendar.get(Calendar.DAY_OF_WEEK)));


        //Calender的强大之处是会对数据做自动调整
        //比如如果当前月份是1月31日,如果对月份加1, 则会自动计算31天,则会展示3月3日, 实际上并不是加了1个月。需要特殊注意
        Calendar c = Calendar.getInstance();
        c.set(Calendar.MONTH, 1);
        c.set(Calendar.DAY_OF_MONTH, 31);
        c.add(Calendar.MONTH, 1);
        System.out.println("2023年1月31号加1个自然月的值 之后的月份: " + c.get(Calendar.MONTH) + " 月 "+ c.get(Calendar.DAY_OF_MONTH) + "号");

        //roll方法, roll与add方法的区别,就是roll进行设置值的时候,不会改变范围更大的值
        //距离,如果是当前时间是12:57
        //对分钟数+4,  使用add  ==> 13:01(会导致小时发生进位)
        //            使用roll ==> 12:01c.get(Calendar.MINUTE)
        System.out.println("" + c.get(Calendar.HOUR_OF_DAY) + " "  + c.get(Calendar.MINUTE));

        c.set(Calendar.HOUR_OF_DAY, 12);
        c.set(Calendar.MINUTE, 57);
        c.add(Calendar.MINUTE, 4);

//        c.roll(Calendar.MINUTE, 4);
        System.out.println("" + c.get(Calendar.HOUR_OF_DAY) + " "  + c.get(Calendar.MINUTE));



        //五、SimpleDateFormat
        //一句话讲述它的作用: 用于Date和String字符转换
        //yyyy表示4位数表示年份
        //MM表示两位数表示月份
        //E 表示的是星期几
        // a 表示的是上午或下午
        Calendar cs = Calendar.getInstance();
        cs.set(2023,04,02,17,01,20);

        //1. date ==> String
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日 HH时mm分ss秒 E a");
        String now = sdf.format(cs.getTime());
        System.out.println("当前日期是:" + now);


        //2.String ==> date
        String str = "2023-04-02 17:00:45.456";
        SimpleDateFormat sd = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS");
        try{
            Date date = sd.parse(str);
            System.out.println(sd.format(date));

        }catch (ParseException e) {
            e.printStackTrace();
        }


    }
}


©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容