开发者社区> hello熊本> 正文

Java对时间进行操作(LocalDateTime,Calendar)

简介: 题记: Java的时间日期API一直以来都是被诟病的东西,为了解决这一问题,Java 8中引入了新的时间日期API,其中包括LocalDate、LocalTime、LocalDateTime、Clock、Instant等类,这些的类的设计都使用了不变模式,因此是线程安全的设计。
+关注继续查看

题记:

Java的时间日期API一直以来都是被诟病的东西,为了解决这一问题,Java 8中引入了新的时间日期API,其中包括LocalDate、LocalTime、LocalDateTime、Clock、Instant等类,这些的类的设计都使用了不变模式,因此是线程安全的设计。

一、如下有详细的说明:

package com.gws;

import java.text.SimpleDateFormat;
import java.time.Clock;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
import java.util.Calendar;
import java.util.Date;
import java.util.TimeZone;

/**
 * @author:wangdong
 * @description:Java对日期和时间的处理
 */
public class DateTimeTest {
    public static void main(String[] args) {

        //一、获取当前年月日时分秒
        //在Jdk8之前可以用Calendar对时间做处理
        // 创建java.util.Calendar 实例,调用其get()方法传入不同的参数即可获得参数所对应的值
        //实例化Calendar
        Calendar calendar = Calendar.getInstance();
        //获取年份
        System.out.println(calendar.get(Calendar.YEAR));
        //获取月份,注意这个方法Calendar.MONTH,获取的值是0-11
        //例如我是419执行的值,输出是3
        System.out.println(calendar.get(Calendar.MONTH));
        //获取当月日期
        System.out.println(calendar.get(Calendar.DATE));
        //获取当天的值
        //Field number for <code>get</code> and <code>set</code> indicating the
        //hour of the day. <code>HOUR_OF_DAY</code> is used for the 24-hour clock.
        //E.g., at 10:04:15.250 PM the <code>HOUR_OF_DAY</code> is 22
        //pm下午十点就是对应22,我现在是在下午7点多执行的程序,输出的是19
        System.out.println(calendar.get(Calendar.HOUR_OF_DAY));
        //获取当前的分钟,当前58
        System.out.println(calendar.get(Calendar.MINUTE));
        //获取当前的秒
        System.out.println(calendar.get(Calendar.SECOND));

        //获取当前年月日时分秒
        //在jdk8时候,引入了一个新的类,LocalDateTime
        //例如获取当前的年月日时分秒
        LocalDateTime localDateTime = LocalDateTime.now();
        System.out.println(localDateTime.getYear());
        //这个的月份是从1-12月份表示的
        //获取的是英文
        System.out.println(localDateTime.getMonth());
        //获取的是中文
        System.out.println(localDateTime.getMonthValue());
        System.out.println(localDateTime.getDayOfMonth());
        System.out.println(localDateTime.getHour());
        System.out.println(localDateTime.getMinute());
        System.out.println(localDateTime.getSecond());

        //二、取得从197011000秒到现在的毫秒数
        //获取毫秒
        System.out.println(Calendar.getInstance().getTimeInMillis());
        System.out.println(System.currentTimeMillis());
        //Jdk8,Clock获取毫秒
        System.out.println(Clock.systemDefaultZone().millis());

        //三、获取当月的最后一天
        System.out.println(calendar.getActualMaximum(Calendar.DAY_OF_MONTH));

        //四、怎么格式化日期
        //java.text.DataFormat 的子类(如SimpleDateFormat类)中的format(Date)方法可将日期格式化。
        //Java 8中可以用java.time.format.DateTimeFormatter来格式化时间日期,代码如下所示。
        //按照当前格式,打印当前日期,2018/04/19 20:17:08
        SimpleDateFormat dateFormat =  new SimpleDateFormat("YYYY/MM/dd HH:MM:SS");
        Date date = new Date();
        System.out.println(dateFormat.format(date));
        //在Jdk8中格式化时间操作
        DateTimeFormatter dateTimeFormatter = DateTimeFormatter.ofPattern("YYYY/MM/dd");
        LocalDate localDate = LocalDate.now();
        System.out.println(localDate.format(dateTimeFormatter));

        //五、打印昨天的当前时刻
        calendar.add(Calendar.DATE,-1);
        System.out.println(calendar.getTime());
        //通过jdk8的操作
        LocalDateTime today = LocalDateTime.now();
        LocalDateTime yesterday = today.minusDays(1);
        System.out.println(yesterday);

    }
}

二、输出的结果

2018
3
19
20
25
11
2018
APRIL
4
19
20
25
11
1524140711159
1524140711159
1524140711159
30
2018/04/19 20:04:168
2018/04/19
Wed Apr 18 20:25:11 CST 2018
2018-04-18T20:25:11.184

好了,很多东西需要自己去慢慢尝试!

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
Nginx学习笔记总结:初次认识 Nginx
Nginx是一个高性能的HTTP,一款轻量级的Web 服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器,在BSD-like 协议下发行。其特点是占有内存少,并发能力强,事实上nginx的并发能力在同类型的网页服务器中表现较好。Nginx是由伊戈尔·赛索耶夫为俄罗斯访问量第二的Rambler.ru站点(俄文:Рамблер)开发的,第一个公开版本0.1.0发布于2004年10月4日。
3 0
ECS使用感受
阿里云服务器初体验
5 0
云起实验室第一期学习
云起实验室第一期学习
3 0
pywebio编写前端页面
pywebio编写前端页面
4 0
Python 脚本一个要注意的点
Python 脚本一个要注意的点
4 0
主流实时流处理计算框架Flink初体验。
Apache Flink是由Apache软件基金会开发的开源流处理框架,其核心是用Java和Scala编写的分布式流数据流引擎。Flink以数据并行和流水线方式执行任意流数据程序,Flink的流水线运行时系统可以执行批处理和流处理程序。此外,Flink的运行时本身也支持迭代算法的执行。Flink 是一个框架和分布式处理引擎,用于对无界和有界数据流进行状态计算。Flink 被设计为在所有常见的集群环境中运行,以内存中的速度和任何规模执行计算。Apache Flink 是为分布式、高性能、随时可用以及准确的流处理应用程序打造的开源流处理框架。
4 0
浅浅的学习一下汇编技术入门基础知识,隔壁家的小孩都学哭了。
我们的计算机知识就像一座金字塔,底层是数学,上面是数字电路,然后是汇编,再往上是操作系统、网络,数据库、高级编程语言、框架等等…我们不可能精通这个金子塔的每一层, 但是想走的更远就必须要了解这个金字塔的底层。因此,学习汇编并不是为了用汇编在应用层设计程序,而是为了深刻理解机器运行程序的机理。就像对于人来说不能没有常识一样,尽管常识不能直接挣钱吃饭,但它影响谈吐,影响你的判断力和决断力,决定着你接受新事物和新知识的程度。汇编就是计算机语言里面的常识和基础。
3 0
+关注
hello熊本
热衷技术,热爱生活的熊本同学!
243
文章
0
问答
文章排行榜
最热
最新
相关电子书
更多
JS零基础入门教程(上册)
立即下载
性能优化方法论
立即下载
手把手学习日志服务SLS,云启实验室实战指南
立即下载