Java语言进阶-常用类-日期时间类

java.lang.System类

System类提供的public static long currentTimeMillis()用来返回当前时间与1970年1月1日0时0分0秒之间以毫秒为单位的时间差。

  • 此方法适合用于计算时间差

计算世界时间主要有三个标准:UTC/GMT/CST

java.util.Date类

表示特定的瞬间,精确到毫秒

这个类有两个构造器:Date()/Date(long date)

常用方法:

  • getTime()

    返回当前时间与1970年1月1日0时0分0秒之间以毫秒为单位的时间差。

  • toString()

    把此 Date 对象转换为以下形式的 String:dow mon dd hh:mm:ss zzz yyyy。其中: dow 是一周中的某一天 (Sun, Mon, Tue, Wed, Thu, Fri, Sat),zzz是时间标准。

import java.util.Date;

public class DateTimeTest {
    public static void main(String[] args) {
        Date d = new Date();
        System.out.println(d.getTime());
        System.out.println(d.toString());
    }
}

---------
1591861083689
Thu Jun 11 15:37:09 CST 2020

java.text.SimpleDateFormat类

SimpleDateFormat类是一个允许自定义格式化的类。

这个类也有两个构造器:SimpleDateFormat()/SimpleDateFormat(String pattern)

常用方法:

  • Format(Date date)

    方法格式化时间对象date

  • parse(String source)

    从给定字符串的开始解析文本,生成一个日期

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

public class DateTimeTest {
    public static void main(String[] args) {
        // 产生一个Date实例
        Date date = new Date(); 

        // 产生一个formater格式化的实例
        SimpleDateFormat formater = new SimpleDateFormat();
        // 打印输出默认的格式
        System.out.println(formater.format(date));

        SimpleDateFormat formater2 = new SimpleDateFormat("yyyy年MM月dd日 EEEHH:mm:ss");
        System.out.println(formater2.format(date));

        try {
            // 实例化一个指定的格式对象
            Date date2 = formater2.parse("2008年08月08日 星期一 08:08:08");
            // 将指定的日期解析后格式化按指定的格式输出
            System.out.println(date2.toString());
        } catch (ParseException e) {
            e.printStackTrace();
        }
    }
}

java.util.Calendar类

Calendar是一个抽象基类,用于完成日期字段之间相互操作的功能。

构造器:Calendar.getInstance()/GregorianCalendar()

常用方法:

  • get(int field)

    获取想要得到的时间信息。

    field可以是YEAR(年)、MONTH(月)、DAY_OF_WEEK(日)、HOUR_OF_DAY(时)、MINUTE(分)、SECOND(秒)

  • set(int field,int value)

    修改时间信息

  • add(int field,int amount)

    增加时间信息的值

  • getTime()

    获取时间

  • setTime()

    修改时间

import java.util.Calendar;
import java.util.Date;

public class DateTimeTest {
    public static void main(String[] args) {
        Calendar calendar = Calendar.getInstance();

        // 从一个 Calendar 对象中获取 Date 对象
        Date date = calendar.getTime();

        // 使用给定的 Date 设置此 Calendar 的时间
        date = new Date(234234235235L);

        calendar.setTime(date);
        
        calendar.set(Calendar.DAY_OF_MONTH, 8);
        System.out.println("当前时间日设置为8后,时间是:" + calendar.getTime());

        calendar.add(Calendar.HOUR, 2);
        System.out.println("当前时间加2小时后,时间是:" + calendar.getTime());

        calendar.add(Calendar.MONTH, -2);
        System.out.println("当前日期减2个月后,时间是:" + calendar.getTime());
    }
}

以上四个类是老API,现在用的不是很多,下面是java8以后新出的API。

java.time

java.time 中包含了所有关于本地日期(LocalDate)、本地时间(LocalTime)、本地日期(LocalDateTime)、时区(ZonedDateTime)和持续时间(Duration)的类。历史悠久的 Date 类新增了 toInstant() 方法,用于把 Date 转换成新的表示形式。这些新增的本地化时间日期 API 大大简化了日期时间和本地化的管理

java.time除了本身的基础包,还有四个包:

  • java.time.chrono 提供对不同的日历系统的访问
  • java.time.format 格式化和解析时间和日期
  • java.time.temporal 包括底层框架和扩展特性
  • java.time.zone 包括时区支持的类

日常开发中只需要用到基础包与format包,偶尔需要使用temporal包。

time包中有三个常用的类:

  • LocalDate代表IOS格式(yyyy-MM-dd)的日期,可以存储生日、纪念日等日期
  • LocalTime表示一个时间,而不是日期
  • LocalDateTime是用来表示日期和时间的,这是一个最常用的类。
    在这里插入图片描述
瞬时

time包中有一个概念叫做瞬时(instant),被用来记录应用程序中的时间戳。

他可以直接从时间线上取出一个点,精度达到纳秒级别,不需要提供上下文信息。
在这里插入图片描述

Java小白修炼手册

java.time.format.DateTimeFormatter类

这个类提供三种格式化方式

  • 预定义的格式

    ISO_LOCAL_DATE_TIME

    ISO_LOCAL_DATE

    ISO_LOCAL_TIME

  • 本地化相关的格式

    ofLocalizedDateTime(FormatStyle.LONG)

  • 自定义格式

    ofPattern(“yyyy-MM-dd hh:mm:ss”)

常用方法:

  • ofPattern(String pattern)

    返回一个指定字符串格式的时间

  • format(TemporalAccessor t)

    格式化一个日期、时间,返回字符串

  • parse(CharSequence text)

    将格式化字符序列解析为一个日期

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
Java经典编程源码例程,可以做为你的学习设计参考。 第1章 Java语言概述 1 实例001 输出“Hello World” 2 实例002 输出控制台传递的参数 2 实例003 输出由“*”组成的三角形 3 实例004 输出符号表情 5 第2章 Eclipse开发工具 6 实例005 下载并运行Eclipse工具 7 实例006 为Eclipse安装中文包 8 实例007 使用Eclipse注释代码 10 实例008 使用Eclipse格式化代码 11 实例009 安装WindowBuilder插件 12 实例010 开发计算器界面 14 第3章 Java语言基础 15 实例011 输出错误信息与调试信息 16 实例012 从控制台接收输入字符 16 实例013 重定向输出流实现程序日志 17 实例014 自动类型转换与强制类型转换 19 实例015 加密可以这样简单(位运算) 20 实例016 用三元运算符判断奇数和偶数 21 实例017 不用乘法运算符实现2×16 22 实例018 实现两个变量的互换 (不借助第3个变量) 23 第4章 流程控制 25 实例019 判断某一年是否为闰年 26 实例020 验证登录信息的合法性 27 实例021 为新员工分配部门 28 实例022 用switch语句根据消费 金额计算折扣 29 实例023 判断用户输入月份的季节 31 实例024 使用while循环语句与自增 运算符循环遍历数组 33 实例025 使用for循环输出杨辉三角形 34 实例026 使用嵌套循环在控制台上 输出九九乘法表 35 实例027 使用while循环计算1+ 1/2!+1/3!…1/20! 36 实例028 使用for循环输出空心的菱形 38 实例029 终止循环体 39 实例030 循环体的过滤器 41 第5章 数组及其常用操作 43 实例031 获取一维数组的最小值 44 实例032 将二维数组中的行列互换 45 实例033 利用数组随机抽取幸运观众 47 实例034 用数组设置JTable表格的 列名与列宽 49 实例035 使用按钮控件数组实现 计算器界面 51 实例036 通过复选框控件数组实现 添加多个复选框控件 52 实例037 使用选择排序法对数组排序 53 实例038 使用冒泡排序法对数组排序 55 实例039 使用快速排序法对数组排序 57 实例040 使用直接插入法对数组排序 59 实例041 使用sort()方法对数组排序 61 实例042 反转数组中元素的顺序 63 第6章 面向对象入门 65 实例043 自定义图书类 66 实例044 温度单位转换工具 67 实例045 成员变量的默认初始化值 68 实例046 单例模式的应用 69 实例047 汉诺塔问题求解 70 实例048 编写同名的方法 71 实例049 构造方法的应用 72 实例050 统计图书的销售量 73 实例051 两只完全相同的宠物 74 实例052 重新计算对象的哈希码 76 实例053 使用字符串输出对象 77 实例054 Java对象的假克隆 78 实例055 Java对象的浅克隆 80 实例056 Java对象的深克隆 82 实例057 序列化与对象克隆 84 实例058 深克隆效率的比较 87 第7章 面向对象 89 实例059 经理与员工的差异 90 实例060 重写父类中的方法 92 实例061 计算几何图形的面积 93 实例062 简单的汽车销售商场 95 实例063 使用Comparable接口自定 义排序 96 实例064 策略模式的简单应用 98 实例065 适配器模式的简单应用 100 实例066 普通内部类的简单应用 102 实例067 局部内部类的简单应用 103 实例068 匿名内部类的简单应用 104 实例069 静态内部类的简单应用 105 实例070 实例化Class类的几种方式 107 实例071 查看类的声明 108 实例072 查看类的成员 110 实例073 查看内部类信息 112 实例074 动态设置类的私有域 113 实例075 动态调用类中方法 115 实例076 动态实例化类 116 实例077 创建长度可变的数组 117 实例078 利用反射重写toString()方法 119 第8章 字符串与包装类 121 实例079 将数字格式化为货币字符串 122 实例080 货币金额大写格式 123 实例081 String类格式化当前日期 125 实例082 字符串大小写转换 1

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

寒 暄

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值