zoukankan      html  css  js  c++  java
  • 廖雪峰Java7处理日期和时间-2Data和Calendar-1Date

    计算机中如何存储和表示日期和时间

    Epoch Time:从1970年1月1日零点(格林威治时区/GMT+00:00)到现在经历的秒数,也叫timestamp, 例如:

    • 秒级:
      * 北京 2016-11-20 08:15:01=1479600901
      * 伦敦 2016-11-20 00:15:01=1479600901
    • 毫秒数:
      * 北京 2016-11-20 08:15:01.123=1479600901123
    • 浮点数:
      * 北京 2016-11-20 08:15:01.123=1479600901.123

    Epoch Time存储是是一个整数,毫秒数使用long类型表示

    • long t = 1479600901123L;

    Java中表示日期和时间的方式

    • 2016-11-20 8:15:01 GMT+8:00
    • 11/19/2016 19:15:01 America/New_York

    1.Java处理日期和时间的API

    Java有2套处理日期和时间的API,

    • java.util//旧的API存在很多问题,所以Java8引入了新的API
      * Data
      * Calendar
    • java.time(JDK>=1.8)
      * LocalData
      * LocalTime
      * ZonedDataTime
      * Instant

    2.java.util.Data获取当前时间

    • new Data() 获取当前时间
    • long getTime() 获取时间戳的整数值
    • toString() 按照默认模式,将当前时间转换为字符串
    • toGMTString() 通过默认的格式打印GMT时间
    • toLocaleString() 通过默认格式打印Locale时间
    • SimpleDataFormate yyyy:年份 MM:月份
      * format 将时间按照指定时间格式生成字符串
      * parse 将字符串转化为时间

    3.获取当前时间

        public static void main(String[] args) throws ParseException {
            //获取系统当前时间戳,毫秒级
            System.out.println("获取系统当前时间戳:"+System.currentTimeMillis());
            //使用Date获取当前时间
            Date now = new Date();
            System.out.println("使用Date获取当前时间:"+now);
            //从Date对象获取long类型
            long t = now.getTime();
            System.out.println("从Date对象获取long类型:"+t);
            //把long类型转化为时间
            System.out.println("把long类型转化为时间:"+new Date(t));
        }
    

    4.从Date对象获取字符串

        public static void main(String[] args) throws ParseException {
            //使用Date获取当前时间
            Date now = new Date();
            System.out.println("使用Date获取当前时间:"+now);
            System.out.println("按照默认格式将时间转换为字符串:"+now.toString());
            System.out.println("已弃用-按照GMT格式将时间转换为字符串:"+now.toGMTString());
            System.out.println("已弃用-按照当地格式将时间转为字符串:"+now.toLocaleString());
        }
    

    5.将Date对象转换为格式化字符串

        public static void main(String[] args) throws ParseException {
            Date now = new Date();
            System.out.println(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(now));
            System.out.println(new SimpleDateFormat("MM-dd-yyyy HH:mm:ss").format(now));
            System.out.println("中国标准时区:"+new SimpleDateFormat("yyyy-MM-dd HH:mm:ss z").format(now));
            System.out.println("GMT时区:"+new SimpleDateFormat("yyyy-MM-dd HH:mm:ss Z").format(now));
        }
    
    [日期时间字符串格式](https://docs.oracle.com/javase/9/docs/api/java/text/SimpleDateFormat.html)

    6.把字符串解析为Date对象

        public static void main(String[] args) throws ParseException {
            String s1 = "2016-11-20 12:15:59";
            Date date1 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").parse(s1);
            System.out.println("使用默认的Locale.CHINA解析:"+date1);
    
            String s2 = "NOv/20/2016 12:15:59";
            Date date2 = new SimpleDateFormat("MMM/dd/yyyy HH:mm:ss",Locale.US).parse(s2);
            System.out.println("使用指定的Locale.US解析:"+date2);
    
            String s3 = "2016-11-20T12:15:59";
            Date date3 = new SimpleDateFormat("hhhh-MM-dd'T'HH:mm:ss").parse(s3);
            System.out.println("使用ISO8601标准格式解析:"+date3);
        }
    

    7.java.util.Date的问题:

    • 不能进行时区的换算
    • 很难进行日期和时间的加减
    • 不能计算两个日期相差多少天
    • 很难计算某个月第一个星期一是几号

    8.总结

    • 理解epoch time
    • Java有两套日期和时间的API:
      * java.util.Date/Calendar
      * java.time
    • 正确使用java.util.Date
      * Date和long的转换
      * Date和String的转换:SimpleDateFormat
  • 相关阅读:
    浏览器 显示一个对话框,对话框中包含一条文字信息,用来提示用户输入文字。window.prompt()
    JS字符串转换为JSON对象的四种方法
    js中 json对象与json字符串相互转换的几种方式 $.parseJSON(jsonStr)json字符串转换为json对象
    C#变量命名规则(命名规范)
    C#中AppDomain.CurrentDomain.BaseDirectory(获取程序的基目录)及各种路径获取方法
    C# 的 Path.GetFileName、Path.GetExtension、Path.GetDirectoryName千一网络 http://www.itpow.com/
    js计算两个时间相差天数,获取时间的毫秒数之差
    C#将DataTable转化为List<T>
    https://www.cnblogs.com/sizhizhiyue/p/4820973.html asp.net后台导出excel的方法一:使用response导出excel
    .NET调用AS/400上的程序(.NET CALL AS/400 PGM)
  • 原文地址:https://www.cnblogs.com/csj2018/p/10666853.html
Copyright © 2011-2022 走看看