• Java之日期相关


    Data

    包名:import java.util.Date;

    1. import java.util.Date;
    2. public class Test {
    3. public static void main(String[] args) {
    4. Date date = new Date();
    5. System.out.println(date);//Sun Jul 31 18:49:48 CST 2022
    6. System.out.println(date.toString());//Sun Jul 31 18:49:48 CST 2022
    7. System.out.println(date.toGMTString());//31 Jul 2022 10:49:48 GMT
    8. System.out.println(date.toLocaleString());//2022-7-31 18:51:11
    9. System.out.println(date.getYear());//显示的时间+1900为现在的年份
    10. System.out.println(date.getMonth());//注意这里的月份在0-11之间,0表示1月
    11. System.out.println(date.getTime());//返回在1970年1月1日0点00分00秒到现在的毫秒数
    12. }
    13. }

     包名:import java.sql.Date;

    1. import java.sql.Date;
    2. public class Test1 {
    3. public static void main(String[] args) {
    4. //注意:里面没有提供空构造器
    5. Date date = new Date(System.currentTimeMillis());
    6. System.out.println(date);//2022-07-31
    7. System.out.println(date.toGMTString());//31 Jul 2022 11:19:54 GMT
    8. //以下相同
    9. }
    10. }

    import java.util.Date包和import java.sql.Date包的区别

    • import java.util.Date:里面提供了年月日,时分秒;import java.sql.Date:里面仅有年月日
    • import java.sql.Date(子类)继承了import java.util.Date(父类)

    import java.sql.Date和import java.util.Date之间的相互转换 

    util转sql以及String转sql 

    1. import java.sql.Date;
    2. public class Test1 {
    3. public static void main(String[] args) {
    4. //util转sql
    5. java.util.Date date =new Date(System.currentTimeMillis());//util
    6. //向下转型
    7. Date date3 = (Date) date;
    8. System.out.println(date3);
    9. //利用构造器
    10. Date date1 = new Date(date.getTime());
    11. System.out.println(date1);
    12. //string类型转sql
    13. Date date2 = Date.valueOf("2019-3-8");
    14. System.out.println(date2);
    15. }
    16. }

    sql转util与String转util 

    1. import java.sql.Date;
    2. public class Test1 {
    3. public static void main(String[] args) {
    4. //sql转util
    5. Date date = new Date(System.currentTimeMillis());
    6. //父类引用指向子类对象
    7. java.util.Date data1=date;
    8. System.out.println(data1);
    9. //string转util
    10. //1.将string转sql(里面传入的字符串格式只能是下面格式)
    11. Date date1 = Date.valueOf("2015-3-7");
    12. //2.将sql转util
    13. java.util.Date data11 = data1;
    14. System.out.println(data11);
    15. }
    16. }

     日期转换类(DateFormat)

    作用:实现String与Date之间的相互转换(以自定义格式)

    注意:DateFormat为抽象类,其不可以直接创建对象,我们可以用其子类SimpleDateFormat

    日期格式 

     

    string转date 

    1. //日期转换
    2. //string(任意格式)转date
    3. DateFormat dateFormat = new SimpleDateFormat("yyyy:MM:dd HH-mm-ss");//潇洒格式
    4. //string转date(此string格式要和定义的格式匹配,因为是以特定的格式进行解析)
    5. Date parse = dateFormat.parse("2019:7:9 12-45-54");
    6. //以特定的格式打印
    7. System.out.println(parse.toLocaleString());

    date转string 

    1. //date转string
    2. DateFormat dateFormat = new SimpleDateFormat("yyyy:MM:dd HH-mm-ss");
    3. String format = dateFormat.format(new Date());
    4. //将当前日期以上面确定的格式转化为字符串
    5. System.out.println(format);//2022:07:31 20-27-59

    日历类(Calendar) 

     注意:Calendar为抽象类,其不可以直接创建对象,我们可以用其子类GregorianCalendar

    创建对象 

    1. //创建对象方式
    2.         Calendar calendar = new GregorianCalendar();//方式1
    3.         Calendar instance = Calendar.getInstance();//方式2
    4.         System.out.println(calendar + "" + instance);//超长数组,信息全面

    获取或改变日期信息

    1. //获取日期信息(get方法)
    2. Calendar calendar = new GregorianCalendar();//方式1
    3. System.out.println(calendar.get(Calendar.YEAR));//获取年份
    4. System.out.println(calendar.get(Calendar.MONTH));//获取月份
    5. System.out.println(calendar.get(Calendar.DATE));//获取日
    6. System.out.println(calendar.get(Calendar.HOUR));//获取小时
    7. System.out.println(calendar.get(Calendar.MINUTE));//获取分钟
    8. System.out.println(calendar.get(Calendar.SECOND));//获取秒钟
    9. System.out.println(calendar.get(Calendar.DAY_OF_WEEK));//获取一个星期的第几天(国外周日是一星期的第一天)
    10. System.out.println(calendar.getActualMaximum(Calendar.DATE));//得到日期的最大天数
    11. System.out.println(calendar.getActualMinimum(Calendar.DATE));//得到日期的最小天数
    12. //set方法,可以改变calendar的内容
    13. calendar.set(Calendar.YEAR, 1999);
    14. calendar.set(Calendar.MONTH, 6);
    15. calendar.set(Calendar.DATE, 16);
    16. System.out.println(calendar);

     string与calendar的转化

    1. Calendar calendar = new GregorianCalendar();//方式1
    2. //string转calendar
    3. //先转化为sql
    4. Date date = Date.valueOf("2020-4-5");
    5. //sql转calendar
    6. calendar.setTime(date);
    7. System.out.println(calendar.get(Calendar.YEAR));
    8. System.out.println(calendar.get(Calendar.MONTH));
    9. System.out.println(calendar.get(Calendar.DATE));

    以上日期的缺陷 

    • 可变性:像日期、时间这样的类应该是不可变的
    • 偏移性:Date中的年份是从1900开始的,而月份都是从0开始的
    • 格式化:DateFormat格式化只对date有用calendar不行

    本地日期时间  

    创建对象

    1. //创建对象
    2. //方法1——now()
    3. LocalDate localDate = LocalDate.now();
    4. System.out.println(localDate);//2022-07-31
    5. LocalTime localtime = LocalTime.now();
    6. System.out.println(localtime);//21:56:16.739
    7. LocalDateTime localDateTime = LocalDateTime.now();
    8. System.out.println(localDateTime);//2022-07-31T21:56:16.739
    9. //方法2——of()[创建指定日期/时间对象]
    10. LocalDate localDate1 = LocalDate.of(2012, 3, 8);
    11. System.out.println(localDate1);//2012-03-08
    12. LocalTime localTime = LocalTime.of(12, 35, 56);
    13. System.out.println(localTime);//12:35:56
    14. LocalDateTime localDateTime1 = LocalDateTime.of(2012, 3, 8, 12, 35, 56);
    15. System.out.println(localDateTime1);//2012-03-08T12:35:56

    获取或设置日期时间 

    1. //LocalDateTime用的比较多
    2. LocalDateTime localDateTime = LocalDateTime.now();
    3. System.out.println(localDateTime);//2022-07-31T22:7:53.808
    4. //get方法获取
    5. System.out.println(localDateTime.getYear());//2022
    6. System.out.println(localDateTime.getMonth());//JULY
    7. System.out.println(localDateTime.getMonthValue());//7
    8. System.out.println(localDateTime.getDayOfMonth());//31
    9. System.out.println(localDateTime.getDayOfWeek());//SUNDAY
    10. System.out.println(localDateTime.getHour());//22
    11. System.out.println(localDateTime.getMinute());//7
    12. System.out.println(localDateTime.getSecond());//53
    13. //with方法(set)方法
    14. LocalDateTime localDateTime2 = localDateTime.withMonth(8);
    15. System.out.println(localDateTime);//2022-07-31T22:15:07.451(以前的都没变)
    16. System.out.println(localDateTime2);//2022-08-31T22:15:07.451

     日期的加减操作

    1. //LocalDateTime用的比较多
    2. LocalDateTime localDateTime = LocalDateTime.now();
    3. System.out.println(localDateTime);//2022-07-31T22:7:53.808
    4. //提供了加减的操作
    5. LocalDateTime localDateTime3 = localDateTime.plusMonths(4);//加月份操作
    6. System.out.println(localDateTime3);//2022-11-30T22:17:28.808
    7. LocalDateTime localDateTime4 = localDateTime.minusMonths(3);
    8. System.out.println(localDateTime4);//2022-04-30T22:19:21.591

    DateTimeFormat 

    作用:实现字符串和日期的互转

    方式1:预定义标准格式 

    语法:

    • DateTimeFormatter.ISO_LOCAL_DATE_TIME
    • DateTimeFormatter.ISO_LOCAL_DATE
    • DateTimeFormatter.ISO_LOCAL_TIME

    localdatetime与string类型相互转化 

    1. DateTimeFormatter df1 = DateTimeFormatter.ISO_LOCAL_DATE_TIME;
    2. //df1可以帮助我们完成localdatetime与string类型之间的转化
    3. //localdatetime转string
    4. LocalDateTime localDateTime = LocalDateTime.now();
    5. String format = df1.format(localDateTime);
    6. System.out.println(format);//2022-07-31T22:30:42.308
    7. //string转localdatetime
    8. TemporalAccessor parse = df1.parse("2022-07-31T22:30:42.308");
    9. System.out.println(parse);//{},ISO resolved to 2022-07-31T22:30:42.308

     方式2:本地化相关格式

    语法:DateTimeFormatter.ofLocalizedDateTime(参数) 

    参数格式 

    • FormatStyle.LONG:2022年7月31日 下午10时39分58秒
    • FormatStyle.MEDIUM:2022-7-31 10:39:58
    • FormatStyle.SHORT:22-7-31 下午10:44

    localdatetime与string类型相互转化 

    1. //localdatetime和string转化
    2. DateTimeFormatter df2 = DateTimeFormatter.ofLocalizedDateTime(FormatStyle.LONG);
    3. LocalDateTime dt = LocalDateTime.now();
    4. //localdatetime转string
    5. String format1 = df2.format(dt);
    6. System.out.println(format1);//2022年7月31日 下午10时39分58秒
    7. //string转localdatetime
    8. TemporalAccessor parse1 = df2.parse("2000年8月31日 下午10时39分47秒");
    9. System.out.println(parse1);//{},ISO resolved to 2000-08-31T22:39:47

    ​​​​方式3:自定义格式。 

    语法:DateTimeFormatter.ofPattern("自定义格式") 

     localdatetime与string类型相互转化

    1. DateTimeFormatter df3 = DateTimeFormatter.ofPattern("yyyy:MM:dd hh-mm-ss");
    2. LocalDateTime now = LocalDateTime.now();
    3. //string转localdatetime
    4. String format2 = df3.format(now);
    5. System.out.println(format2);//2022:07:31 10-54-37
    6. //localdatetime转string
    7. TemporalAccessor parse2 = df3.parse("2022:07:31 10-54-37");
    8. System.out.println(parse2);

     

  • 相关阅读:
    1990-2020年江苏省全省人口数、户数(常住)
    从零点五开始的深度学习笔记——VAE(Variational AutoEncoder) (三)VAE的简单实现
    4.2 onnx简化模型结构
    【硬件异常黑盒子功能】成功使用LUA小程序实现类似MDK的硬件检测机制,并且更进一步锁异常位置,支持脱机运行
    idea中maven无法导包问题
    Python中dataclass库
    【车载开发系列】UDS诊断---安全访问服务($0x27)
    深度学习:感知机
    广度搜索解决迷宫问题
    定时器使用
  • 原文地址:https://blog.csdn.net/manhengwei/article/details/126100010