• Java时间 日期 总结


    获取当前时间

    new Date()

    Calendar calendar= Calendar.getInstance();

    calendar.getTime()

    LocalDateTime.now()

    System.currentTimeMillis(); // 毫秒

    java.util.Date

    Date对象里存的是自格林威治时间( GMT)1970年1月1日0点至Date对象所表示时刻所经过的毫秒数

    Sysytem.out.println函数在打印时间时,会取操作系统当前所设置的时区,然后根据这个时区将同毫秒数解释成该时区的时间

    new Date()
    

    java.util.Calendar

    Calendar类是抽象类型

    Calendar cal = Calendar.getInstance();
    // 获取年
    int year = cal.get(Calendar.YEAR);
    

    java.util.concurrent.TimeUnit

    TimeUnit提供了可读性更好的线程暂停操作,通常用来替换Thread.sleep()

    java.text.SimpleDateFormat

    String timeStr = "2017-8-24 11:17:10"; // 字面时间 
    SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); 
    sdf.setTimeZone(TimeZone.getTimeZone("Asia/Shanghai")); // 设置北京时区 
    Date d = sdf.parse(timeStr); 
    System.out.println(sdf.format(d) + ", " + d.getTime());
    
    输出:2017-08-24 11:17:10, 1503544630000
    
    字母 日期或时间元素 表示 示例
    G Era 标志符 Text AD
    y Year 1996; 96
    M 年中的月份 Month July; Jul; 07
    w 年中的周数 Number 27
    W 月份中的周数 Number 2
    D 年中的天数 Number 189
    d 月份中的天数 Number 10
    F 月份中的星期 Number 2
    E 星期中的天数 Text Tuesday; Tue
    a Am/pm 标记 Text PM
    H 一天中的小时数(0-23) Number 0
    k 一天中的小时数(1-24) Number 24
    K am/pm 中的小时数(0-11) Number 0
    h am/pm 中的小时数(1-12) Number 12
    m 小时中的分钟数 Number 30
    s 分钟中的秒数 Number 55
    S 毫秒数 Number 978
    z 时区 General time zone Pacific Standard Time; PST; GMT-08:00
    Z 时区 RFC 822 time zone -0800
    日期和时间模式 结果
    "yyyy.MM.dd G 'at' HH:mm:ss z" 2001.07.04 AD at 12:08:56 PDT
    "EEE, MMM d, ''yy" Wed, Jul 4, '01
    "h:mm a" 12:08 PM
    "hh 'o''clock' a, zzzz" 12 o'clock PM, Pacific Daylight Time
    "K:mm a, z" 0:08 PM, PDT
    "yyyyy.MMMMM.dd GGG hh:mm aaa" 02001.July.04 AD 12:08 PM
    "EEE, d MMM yyyy HH:mm:ss Z" Wed, 4 Jul 2001 12:08:56 -0700
    "yyMMddHHmmssZ" 010704120856-0700
    "yyyy-MM-dd'T'HH:mm:ss.SSSZ" 2001-07-04T12:08:56.235-0700

    java.text.DateFormat

    DateFormat df1 = DateFormat.getDateInstance();
    DateFormat df2 = DateFormat.getDateTimeInstance();
    DateFormat df3 = DateFormat.getTimeInstance();
    

    java.time.Instant

    精确到纳秒

    Instant 代表的是一个时间,并不包括时区,1970年计算偏移量

    实例不可变,可计算,可比较

    Instant instant = Instant.now();
    System.out.println(instant); # 2020-11-10T08:31:41.475Z
    
    // 现在的时间上加上5个小时4分钟
    Instant instant1 = instant.plus(Duration.ofHours(5).plusMinutes(4));
    

    java.time.LocalTime

    不带时区的日期

    实例不可变,可计算,可比较

    java.time.LocalDate

    不带时区的日期

    实例不可变,可计算,可比较

    java.time.LocalDateTime

    ISO-8601日历系统中没有时区的日期时间

    实例不可变,可计算,可比较

    LocalDateTime now = LocalDateTime.now();
    now.isBefore();
    now.isAfter();
    now.format();
    now.toLocalDate();
    now.plusDays(1);//可能是负数
    now.minusDays(1);
    now.getDayOfWeek();
    now.toEpochSecond(ZoneOffset.of("+8"));// 获取时间戳
    

    时间戳

    LocalDateTime.now().

    前台UI时间、Java程序时间、Mysql时间

    java.sql.Date

    java.sql.Time

    java.sql.Timestamp

    从数据库读取的时间,到了java客户端可能存在不同时间,这里就要设置mysql的时区 serverTimezone=Asia/Shanghai

    Instant instant = Instant.parse("2017-05-24T07:56:22Z");
    
    LocalTime localTime = instant.atZone(ZoneId.systemDefault()).toLocalTime();
    
    
    

    时区

    img

  • 相关阅读:
    【星云测试】Wings-面向企业级的单元测试用例自动编码引擎最新发布
    【星云测试】Wings企业级单元测试自动编码引擎白皮书
    Redis基础之命令篇
    Redis安装与启动
    My Self Introduction
    这就是小学生也会用的四则计算练习APP吗?- by软工结对编程项目作业
    Java余弦计算文本相似度项目—第一次个人编程作业(软件工程)
    Android 开发学习进程0.26 fragment的工厂实例化
    Android 开发学习进程0.25 自定义控件
    Android开发学习进程 0.24 存储机制
  • 原文地址:https://www.cnblogs.com/herenwei-wayne/p/14068718.html
Copyright © 2020-2023  润新知