我的编程空间,编程开发者的网络收藏夹
学习永远不晚

Java 进行时间处理的步骤

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

Java 进行时间处理的步骤

一、Calendar

(1)、Calender介绍

Calendar的中文翻译是日历,实际上,在历史上有着许多种计时的方法。所以为了计时的统一,必需指定一个日历的选择。那现在最为普及和通用的日历就是"Gregorian Calendar"。也就是我们在讲述年份时常用"公元**年"。Calendar 在 Java 中是一个抽象类(Abstract Class),GregorianCalendar 是它的一个具体实现。Calendar.getInstance()中所获得的实例就是一个"GreogrianCalendar"对象。

(2)、简单的日期使用


Calendar cal = Calendar.getInstance();
System.out.println(cal.get(Calendar.DATE));//-----------------------今天是几号
System.out.println(cal.get(Calendar.DAY_OF_MONTH));//---------------今天是一月的第几天
System.out.println(cal.get(Calendar.DAY_OF_WEEK));//----------------从星期天开始计算,如果今天星期二,那么返回3
System.out.println( cal.get(Calendar.DAY_OF_YEAR));//----------------今天是一年的第几天
System.out.println( cal.get(Calendar.HOUR));//-----------------------现在是几点     12小时制
System.out.println( cal.get(Calendar.HOUR_OF_DAY));//----------------现在是几点     24小时制,一般使用这个属性赋值
System.out.println(cal.get(Calendar.MILLISECOND));//----------------现在的毫秒
System.out.println( cal.get(Calendar.MINUTE));//---------------------现在是几分
System.out.println( cal.get(Calendar.SECOND));//---------------------现在是几秒
System.out.println(cal.get(Calendar.WEEK_OF_MONTH));//--------------现在是一个月中的第几周
System.out.println(cal.get(Calendar.WEEK_OF_YEAR));//----------------现在是一个年中的第几周
System.out.println(cal.get(Calendar.MONTH));//-----------------------月份获取需要 +1,那么,赋值时需要 -1

System.out.println(cal.get(Calendar.MONTH)-1);     //即可获得上个月的月份

(3)、与Date之间的转换


Calendar calendar = Calendar.getInstance();
// 从一个Calendar 对象中获取 Date 对象

Date date = calendar.getTime();

// 将 Date 对象反应到一个 Calendar 对象中,
// 先获得一个实例,然后设置 Date 对象
calendar.setTime(date);

月份的起始值为0而不是1,所以要设置八月时,我们用7而不是8。
calendar.set(Calendar.MONTH, 7);

计算2000-01-01是星期几

calendar.set(2000,1,1)

calendar.get(calendar.DAY_OF_WEEK )

当然Calender是最早的时间处理,是jdk1.6的东西难免比较过时

二、Apache下的DateUtils

(1)、引入包


<dependency>
       <groupId>org.apache.commons</groupId>
       <artifactId>commons-lang3</artifactId>
       <version>3.9</version>
</dependency>

(2)、没什么可说的上翻译就行


    
    public static final long MILLIS_PER_SECOND = 1000
    
    public static final long MILLIS_PER_MINUTE = 60 * MILLIS_PER_SECOND
    
    public static final long MILLIS_PER_HOUR = 60 * MILLIS_PER_MINUTE
    
    public static final long MILLIS_PER_DAY = 24 * MILLIS_PER_HOUR
    
    public static final int SEMI_MONTH = 1001
    
    public static final int RANGE_WEEK_SUNDAY = 1
    
    public static final int RANGE_WEEK_MONDAY = 2
    
    public static final int RANGE_WEEK_RELATIVE = 3
    
    public static final int RANGE_WEEK_CENTER = 4
     
    public static final int RANGE_MONTH_SUNDAY = 5
    
    public static final int RANGE_MONTH_MONDAY = 6
     
    public DateUtils()
    
    public static boolean isSameDay(final Date date1, final Date date2)
    
    public static boolean isSameDay(final Calendar cal1, final Calendar cal2)
    
    public static boolean isSameInstant(final Date date1, final Date date2)
    
    public static boolean isSameInstant(final Calendar cal1, final Calendar cal2)
    
    public static boolean isSameLocalTime(final Calendar cal1, final Calendar cal2)
    
    public static Date parseDate(final String str, final String... parsePatterns) throws ParseException
    
    public static Date parseDate(final String str, final Locale locale, final String... parsePatterns) throws ParseException
    
    public static Date parseDateStrictly(final String str, final String... parsePatterns) throws ParseException
    
    public static Date parseDateStrictly(final String str, final Locale locale, final String... parsePatterns) throws ParseException
    
    public static Date addYears(final Date date, final int amount)
    
    public static Date addMonths(final Date date, final int amount)
    
    public static Date addWeeks(final Date date, final int amount)
    
    public static Date addDays(final Date date, final int amount)
    
    public static Date addHours(final Date date, final int amount)
    
    public static Date addMinutes(final Date date, final int amount)
    
    public static Date addSeconds(final Date date, final int amount)
    
    public static Date addMilliseconds(final Date date, final int amount)
     
    public static Date setYears(final Date date, final int amount)
     
    public static Date setMonths(final Date date, final int amount)
    
    public static Date setDays(final Date date, final int amount)
    
    public static Date setHours(final Date date, final int amount)
     
    public static Date setMinutes(final Date date, final int amount)
    
    public static Date setSeconds(final Date date, final int amount)
    
    public static Date setMilliseconds(final Date date, final int amount)
    
    public static Calendar toCalendar(final Date date)
    
    public static Date round(final Date date, final int field)
    
    public static Calendar round(final Calendar date, final int field)
    
    public static Date round(final Object date, final int field)
    
    public static Date truncate(final Date date, final int field)
     
    public static Calendar truncate(final Calendar date, final int field)
    
    public static Date truncate(final Object date, final int field)
    
    public static Date ceiling(final Date date, final int field)
    
    public static Calendar ceiling(final Calendar date, final int field)
    
    public static Date ceiling(final Object date, final int field)
    
    public static Iterator<Calendar> iterator(final Date focus, final int rangeStyle)
    
    public static Iterator<Calendar> iterator(final Calendar focus, final int rangeStyle)
    
    public static Iterator<?> iterator(final Object focus, final int rangeStyle)
 

  public static long getFragmentInMilliseconds(final Calendar calendar, final int fragment)
    
    public static long getFragmentInSeconds(final Calendar calendar, final int fragment)
    
    public static long getFragmentInMinutes(final Calendar calendar, final int fragment)
    
    public static long getFragmentInHours(final Calendar calendar, final int fragment)
    
    public static long getFragmentInDays(final Calendar calendar, final int fragment)
    
    public static boolean truncatedEquals(final Calendar cal1, final Calendar cal2, final int field)
    
    public static boolean truncatedEquals(final Date date1, final Date date2, final int field)
    
    public static int truncatedCompareTo(final Calendar cal1, final Calendar cal2, final int field)
    
    public static int truncatedCompareTo(final Date date1, final Date date2, final int field)
	
	
	//简单举例
	System.out.println(DateUtils.addDays(new Date(), 1));//-----------------当前日期。天数加1如果想建议填负数即可
    System.out.println(DateUtils.addHours(new Date(), 0));//----------------当前日期
    Date date = DateUtils.addDays(new Date(), 1);

DateUtils返回的就是Date不需要转换,当然也是很早的东西了,只是诞生在Calender基础之上而已

三、JDK1.8新增的日期API LocalDate | LocalTime | LocalDateTime

新的日期API都是不可变的,更使用于多线程的使用环境中(从默认时区的系统时钟获取当前的日期时间。不用考虑时区差)
优点:

1、之前使用的java.util.Date月份从0开始,我们一般会+1使用,很不方便,java.time.LocalDate月份和星期都改成了enum

2、java.util.Date和SimpleDateFormat都不是线程安全的,而LocalDate和LocalTime和最基本的String一样,是不变类型,不但线程安全,而且不能修改。

3、java.util.Date是一个“万能接口”,它包含日期、时间,还有毫秒数,更加明确需求取舍

4、新接口更好用的原因是考虑到了日期时间的操作,经常发生往前推或往后推几天的情况。用java.util.Date配合Calendar要写好多代码,而且一般的开发人员还不一定能写对。

(1)、LocalDateTime(年月日时分秒)


LocalDateTime date = LocalDateTime.now();
        //2021-03-26T10:24:14.009784900
        System.out.println(date);

		//获取年月日时分秒操作
        System.out.println(date.getYear());
        System.out.println(date.getMonthValue());
        System.out.println(date.getDayOfMonth());
        System.out.println(date.getHour());
        System.out.println(date.getMinute());
        System.out.println(date.getSecond());
        System.out.println(date.getNano());
		
		//当然你也可以获取最近任意的一段时间
		 System.out.println(date.getSecond()+1);           ||        System.out.println(date.getSecond()-1);
		

        // 手动创建一个LocalDateTime实例
        LocalDateTime date2 = LocalDateTime.of(2017, 12, 17, 9, 31, 31, 31);
        System.out.println(date2);
        // 进行加操作,得到新的日期实例
        LocalDateTime date3 = date2.plusDays(12);
        System.out.println(date3);
        // 进行减操作,得到新的日期实例
        LocalDateTime date4 = date3.minusYears(2);
        System.out.println(date4);
		
		isAfter()判断一个日期是否在指定日期之后  返回boolean 类型
		System.out.println(localDateTime.isBefore(LocalDateTime.now()));//---------返回false
		
		isBefore()判断一个日期是否在指定日期之前   返回boolean 类型
		System.out.println(localDateTime.isAfter(LocalDateTime.now()));//---------返回false
	
		isLeapYear()判断是否是闰年(这个是LocalDate类中的方法)  返回boolean类型
		System.out.println(localDateTime.isEqual(LocalDateTime.now()));//---------返回true

(2)、LocalDateTime与Date之间的转换

Date to LocalDateTime


Date todayDate = new Date();

LocalDateTime ldt = Instant.ofEpochMilli( todayDate.getTime() )
        .atZone( ZoneId.systemDefault() )
        .toLocalDateTime();

System.out.println(ldt);

LocalDateTime to Date


LocalDateTime localDateTime = LocalDateTime.now();

Date date = Date.from( localDateTime.atZone( ZoneId.systemDefault()).toInstant());

System.out.println(date);

当然还有很多好玩的东西,LocalDate(年月日) LocalTime(时分秒)和LocalDateTime(年月日时分秒)都大差不差,所以讲一个即可

四、Hutool(Java工具类库)

一个比较好玩的Java工具类库,包含很多好玩的工具类,简单便捷。

(1)、安装

Maven


<dependency>
    <groupId>cn.hutool</groupId>
    <artifactId>hutool-all</artifactId>
    <version>5.6.1</version>
</dependency>

Gradle


compile 'cn.hutool:hutool-all:5.6.1'

Maven中央仓库
Hutool 5.x支持JDK8+,对Android平台没有测试,不能保证所有工具类或工具方法可用。 如果你的项目使用JDK7,请使用Hutool 4.x版本

(2)、使用


	//该工具类时间都是格式化好的
	System.out.println(DateUtil.now());//------------------------------取当前时间
	
	这也没啥好说的下载源码看中文注释即可,就不一一举例了,,,简简单单。

总结

总之好玩的工具类一大坨,不管是jdk原生还是别人封装的工具类,如果你想也可以自己通过jdk1.8的日期api自己封装属于自己的日期工具类,网上的日期工具类太多了,不要重复造轮子~~~~~~~~~~今天也是元气满满的一天

以上就是Java 进行时间处理的步骤的详细内容,更多关于Java 时间处理的资料请关注编程网其它相关文章!

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

Java 进行时间处理的步骤

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

怎么进行python日期时间处理

这篇文章给大家介绍怎么进行python日期时间处理,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。开发中常用的日期操作还有哪些?时区转换显示日期格式化秒数 与 日期 与 字符串的转换我们经常会用到,比如全球化的业务根据不
2023-06-22

python如何对日期时间进行处理

这篇文章给大家分享的是有关python如何对日期时间进行处理的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。开发中常用的日期操作有哪些?获取当前时间获取系统秒数(从纪元时间开始)日期跟秒数之间转换获取日历等日期格式
2023-06-22

如何进行Pandas库中时间序列的处理

这期内容当中小编将会给大家带来有关如何进行Pandas库中时间序列的处理,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。在使用Python进行数据分析时,经常会遇到时间日期格式处理和转换,特别是分析和挖掘与
2023-06-02

java事务处理的步骤是什么

在Java中进行事务处理通常包括以下步骤:获取数据库连接:首先需要建立与数据库的连接,通常使用JDBC或者ORM框架来获取数据库连接。开启事务:在执行数据库操作之前,需要通过调用数据库连接对象的setAutoCommit(false)方法来
java事务处理的步骤是什么
2024-03-07

PHP中的GD库是如何进行图像处理的?(请解释PHP中GD库进行图像处理的方法和步骤。)

PHP中的GD库是一个图像处理工具,其图像处理过程包括:加载图像:使用imagecreatefromxxx()函数从文件加载图像。图像操作:提供广泛的函数进行调整大小、裁剪、旋转、颜色操作、文本覆盖和图像覆盖等操作。保存图像:使用imagexxx()函数以所需格式保存图像。GD库优点包括广泛的支持、易用性、高性能和多种格式支持,但存在透明度处理问题、编辑能力有限和并发问题的限制。
PHP中的GD库是如何进行图像处理的?(请解释PHP中GD库进行图像处理的方法和步骤。)
2024-04-02

java中怎么进行事务的处理

在Java中进行事务处理有多种方式,主要有以下几种方式:1. 编程式事务管理:在代码中显式地使用事务管理器来开启、提交或回滚事务。可以使用`TransactionTemplate`或`PlatformTransactionManager`来
2023-08-23

Linux在命令行下进行时间管理的方式

本篇内容主要讲解“Linux在命令行下进行时间管理的方式”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Linux在命令行下进行时间管理的方式”吧!1.简单纯文本最直接管理你的待办事项的方式就是用
2023-06-05

PHP中的事务处理是如何实现的?(请解释PHP中进行数据库事务处理的步骤。)

PHP中事务处理可确保数据库操作要么全部成功执行,要么全部回滚失败。它通过开始事务、执行操作、提交或回滚事务以及异常处理来实现。PHP事务处理遵循ACID属性,包括原子性、一致性、隔离性和持久性。最佳实践包括只在需要时使用事务,保持事务简洁,避免复杂操作,并始终处理异常以防止数据不一致。
PHP中的事务处理是如何实现的?(请解释PHP中进行数据库事务处理的步骤。)
2024-04-02

Java中怎么处理异步超时的问题

这篇文章主要讲解了“Java中怎么处理异步超时的问题”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Java中怎么处理异步超时的问题”吧!一天,我在改进多线程代码时被Future.get()卡
2023-06-17

MongoDB中怎么处理长时间运行的事务

在MongoDB中,长时间运行的事务可以通过使用分布式事务来处理。MongoDB支持多种事务类型,包括单文档事务和多文档事务。对于长时间运行的事务,可以使用MongoDB的事务管理功能来确保事务的完整性和一致性。在创建事务时,可以设置事务
MongoDB中怎么处理长时间运行的事务
2024-04-19

微信小程序在怎么利用wxs对日期时间进行处理

微信小程序在怎么利用wxs对日期时间进行处理,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。1、时间戳转日期在wxs中处理日期需要使用getDate(time),而不能使用new
2023-06-20

SpringBoot工程打包后执行Java -Jar就能启动的步骤原理

这篇文章主要介绍了SpringBoot工程打包后为何执行Java -Jar就能启动,本文结合实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
2023-05-20

如何进行Linux Kernel iowait 时间的代码原理分享

这篇文章给大家介绍如何进行Linux Kernel iowait 时间的代码原理分享,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。当task发生iowait的时候,内核对他们的处理方法是将task切换出去,让可运行的t
2023-06-06

Python或C API数字在操作处理时的步骤是怎么样的

今天就跟大家聊聊有关Python或C API数字在操作处理时的步骤是怎么样的 ,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。Python/C API数字与字符串在进行相关处理时Pyt
2023-06-17

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录