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. Java7中Switch为什么只支持byte、short、char、int、String

    Java 7中,switch的参数可以是String类型了,这对我们来说是一个很方便的改进.到目前为止switch支持这样几种数据类型:byte short int char String .但是,作 ...

  2. 虚拟机快速下载安装配置aarch64-linux-gnu-gcc工具链

    方式一:软件仓库安装 此方法不用自己去配置交叉编译工具链 1.查看本地仓库有支持哪些版本哪些 输入命令: apt-cache search aarch64 2.下载安装 gcc-8-aarch64-l ...

  3. UltraISO制作启动盘安装CentOS7

    UltraISO制作启动盘安装CentOS7 发表于 2020-03-10  |  分类于 DevOps  |  没有评论 简单几个步骤即可完成启动盘的制作,非常便利 准备工具 准备8G优盘(启动盘制 ...

  4. 1.4 重置root用户密码

    图1-45  系统的欢迎界面 1.4 重置root用户密码 平日里让运维人员头疼的事情已经很多了,因此偶尔把Linux系统的密码忘记了并不用慌,只需简单几步就可以完成密码的重置工作.但是,如果您是第一 ...

  5. IDEA 自定义文件头注释

    什么是 IDEA 自定义文件头注释 IDEA 自定义文件头注释指的是创建 Java 类文件时,IDEA 可以自动设置文件头的注释信息,如下: 如何设置 IDEA 自定义文件头注释 打开 File-&g ...

  6. getaddrinfo()函数详解-(转自 cxz2009)

    1. 概述IPv4中使用gethostbyname()函数完成主机名到地址解析,这个函数仅仅支持IPv4,且不允许调用者指定所需地址类型的任何信息,返回的结构只包含了用于存储IPv4地址的空间.IPv ...

  7. spark算子优化

    一.在聚合前在map端先预聚合 使用reduceByKey/aggregateByKey代替groupByKey 二.一次处理一个分区的数据,不过要注意一个分区里的数据不要太大,不然会报oom * 使 ...

  8. HTML的一些标签以及表单

    HTML的一些标签以及表单 图片标签 属性 说明 src 图像的路径 alt 图像不能显示时的替换文字 title 鼠标悬停时显示的内容 border 设置图像边框的宽度 align 对齐方式 相对路 ...

  9. 安卓开发(2)—— Kotlin语言概述

    安卓开发(2)-- Kotlin语言概述 Android的官方文档都优先采用Kotlin语言了,学它来进行Android开发已经是一种大势所趋了. 这里只讲解部分的语法. 如何运行Kotlin代码 这 ...

  10. mysql查看表的字段与含义

    查看表的字段与含义 select column_name,column_comment from information_schema.`COLUMNS` where table_Schema='lo ...