Python 官方文档:入门教程 => 点击学习
目录一、Calendar (1)、Calender介绍 (2)、简单的日期使用(3)、与Date之间的转换二、Apache下的DateUtils 三、jdk1.8新增的日期api L
Calendar的中文翻译是日历,实际上,在历史上有着许多种计时的方法。所以为了计时的统一,必需指定一个日历的选择。那现在最为普及和通用的日历就是"GreGorian Calendar"。也就是我们在讲述年份时常用"公元**年"。Calendar 在 Java 中是一个抽象类(Abstract Class),GregorianCalendar 是它的一个具体实现。Calendar.getInstance()中所获得的实例就是一个"GreogrianCalendar"对象。
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); //即可获得上个月的月份
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的东西难免比较过时
(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基础之上而已
新的日期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(年月日时分秒)都大差不差,所以讲一个即可
一个比较好玩的Java工具类库,包含很多好玩的工具类,简单便捷。
(1)、安装
<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 时间处理的资料请关注编程网其它相关文章!
--结束END--
本文标题: Java 进行时间处理的步骤
本文链接: https://lsjlt.com/news/126553.html(转载时请注明来源链接)
有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341
2024-03-01
2024-03-01
2024-03-01
2024-02-29
2024-02-29
2024-02-29
2024-02-29
2024-02-29
2024-02-29
2024-02-29
回答
回答
回答
回答
回答
回答
回答
回答
回答
回答
0