java.util.Date

Date类用来表示时间点。

时间是用距离一个固定时间点的毫秒数表示的,这个时间点就是纪元。

UTC时间是为表示这个纪元的科学标准时间,从1970年1月1日0时开始。另一种标准时GMT。

Date类的实现中

  • 表示年份时,是以1900年为参照的,例如1970年表示为70,2020年表示为120;
  • 表示月份时,是从0开始的,1月到12月,分别表示为0-11
  • 表示天时,用1-31表示
  • 表示时分秒时,与实际一致

Date类使用起来相当不方便,一般只是new一个Date对象,表示时间点,而不使用它提供的其它API。

Date date=new Date(0L);
System.out.println(date.getTime()); // 输出 0
System.out.printf("%d/%d/%d%n",
date.getYear(),date.getMonth(),date.getDate()); // 输出 70/0/1 Date now=new Date(); // 默认为当前时间
System.out.printf("%d/%d/%d,%d:%d:%d%n",
now.getYear(),now.getMonth(),now.getDate(),
now.getHours(),now.getMinutes(),now.getSeconds());

日期格式化与解析

java.text.DateFormat抽象类的子类SimpleDateFormat提供了format与parse方法,用来进行日期的格式化与解析。

DateFormat dtf=new SimpleDateFormat("yyyy/MM/dd HH:mm:ss",Locale.SIMPLIFIED_CHINESE);
String nowStr = dtf.format(now);
System.out.println(nowStr); Date birthday = dtf.parse("1998/06/28 10:47:40");
System.out.println(birthday.getTime());

java.util.Calendar

Calendar是另一种表示时间的API,尝试解决Date类的不合理之处,但是使用起来效果也不好,很少使用

GregorianCalendar calendar=new GregorianCalendar();
System.out.printf("%d/%d/%d,%d:%d:%d",
calendar.get(Calendar.YEAR),calendar.get(Calendar.MONTH),calendar.get(Calendar.DAY_OF_MONTH),
calendar.get(Calendar.HOUR),calendar.get(Calendar.MINUTE),calendar.get(Calendar.SECOND));

java.time.LocalDate和java.time.LocalDateTime

LocalDate和LocalDateTime类是推荐使用的时间API,它们都是final类,其中的API不会修改值,而是返回一个新的对象。

LocalDate date=LocalDate.of(1998,6,28);
LocalDate now=LocalDate.now();
LocalDateTime now=LocalDateTime.now(); System.out.printf("%d/%d/%d,%d:%d:%d%n",
now.getYear(),now.getMonthValue(),now.getDayOfMonth(),
now.getHour(),now.getMinute(),now.getSecond()); LocalDateTime oneYearsLater = now.plusYears(1);

这2个类还提供了format和静态的parse方法,用于格式化与解析日期时间。

需要构造一个DateTimeFormatter对象

DateTimeFormatter dtf = DateTimeFormatter.ofPattern("yyyy/MM/dd HH:mm:ss",Locale.getDefault());
String nowStr = now.format(dtf);
System.out.println(nowStr); LocalDateTime dateTime = LocalDateTime.parse("2000/06/28 11:15:23",dtf);
System.out.println(dateTime.getYear());

Java核心API-日期时间的更多相关文章

  1. Java 8 新日期时间 API

    Java 8 新日期时间 API 1. LocalDate.LocalTime.LocalDateTime LocalDate.LocalTime.LocalDateTime 实例是不可变的对象,分别 ...

  2. 使用Java编写一个日期时间封装类

    package base; import java.util.GregorianCalendar; import java.util.StringTokenizer; import java.util ...

  3. 2018.6.19 Java核心API与高级编程实践复习总结

    Java 核心编程API与高级编程实践 第一章 异常 1.1 异常概述 在程序运行中,经常会出现一些意外情况,这些意外会导致程序出错或者崩溃而影响程序的正常执行,在java语言中,将这些程序意外称为异 ...

  4. Java核心API需要掌握的程度

    分类: java技术2009-08-29 01:03 213人阅读 评论(0) 收藏 举报 javaapiswingxmlio Java的核心API是非常庞大的,这给开发者来说带来了很大的方便,经常人 ...

  5. java创建Date日期时间笔记

    (1)public Date() 创建的日期类对象的日期时间被设置成创建时刻相对应的日期时间. 例: Java代码 1.Date today=new Date();  //today被设置成创建时刻相 ...

  6. java里的日期时间

    为了更好理解java的日期时间类,在这里我们先介绍一下关于历法.标准时间的一些概念. 历法有很多种,我们大中华上下五千年,自然也有自己的历法,生活中我们通常把自己传统的历法叫做农历,也有人叫它阴历或夏 ...

  7. java android中日期时间 问题总结

    Date 类型: Date date = new Date();   // 代表获取当前系统日期和时间 System.out.println(date); 使用类的方法设置时间和日期:(通过该方法初始 ...

  8. java基础之日期时间工具类

    package zy.test; import java.sql.Timestamp; import java.text.ParseException; import java.text.ParseP ...

  9. 在java中进行日期时间比较的4种方法

    1. Date.compareTo() java.util.Date提供了在Java中比较两个日期的经典方法compareTo(). 如果两个日期相等,则返回值为0. 如果Date在date参数之后, ...

随机推荐

  1. python模块导入原理

    转自:http://blog.csdn.net/u012422440/article/details/41791433 今日在自学Python,借此机会,正好重新开始写博文,既可以巩固python的知 ...

  2. 19 常用API

    API 什么是API? API (Application Programming Interface) :应用程序编程接口 简单来说:就是Java帮我们已经写好的一些方法,我们直接拿过来用就可以了 1 ...

  3. mysql登录框注入绕过单引号匹配

    0x00 原理   网站使用正则匹配对用户名一栏传到服务器的参数进行了匹配,如果匹配到了单引号则报错 0x01 简单例子   当我们输入admin'时,网站直接报错,很有可能就是用了正则,这样我们也不 ...

  4. vue常见错误

    错误集锦 错误一 错误二 原因是写太多的import,修改呈如下方式 错误三 源码如下 原因是没有在return后面添加值 应该为 return false

  5. [刷题] PTA 6-10 阶乘计算升级版

    要求: 实现一个打印非负整数阶乘的函数 N是用户传入的参数,其值不超过1000.如果N是非负整数,则该函数必须在一行中打印出N!的值,否则打印"Invalid input" 1 # ...

  6. JLINK下载出现问题

    JLINK 下载报错: RAM CHECK FAILED 说法一: 有一种说法是版本的问题 http://tieba.baidu.com/p/1902940329?red_tag=d180765763 ...

  7. .Net Redis实战——实现文章投票并排序

    本系列文章为学习Redis实战一书记录的随笔. 软件和环境版本:Redis:5.0.7  .Net 5.0 文中不会对Redis基础概念做过多介绍. Redis数据类型和命令可在菜鸟教程学习:http ...

  8. THINKPHP_(2)_TP模型的多表关联查询和多表字段的关键字搜索。

    问题: 上述内容中,标题和学年属于一个数据表.分类则属于另外一个数据表,并且是利用id关联后,另外一个数据表中的title字段. 需要设置关键字搜索,实现多表关联查询和多表字段的关键字搜索. 解决方法 ...

  9. 视频动作定位的分层自关注网络:ICCV2019论文解析

    视频动作定位的分层自关注网络:ICCV2019论文解析 Hierarchical Self-Attention Network for Action Localization in Videos 论文 ...

  10. Mobileye 自动驾驶策略(二)

    Mobileye 自动驾驶策略(二) 与多方都成功进行了合作,其中比较大型的合作包括法雷奥.百度和中国 ITS. 法雷奥是最近的的 Tier 1 合作伙伴,法雷奥和 Mobileye 签署协议,表示未 ...