Java核心教程之常见时间日期的处理方法

Java日期处理类Date详解

时间的基础知识

  • 时区:整个地球分为二十四时区,每个时区都有自己的本地时间。
  • 为了统一起见,使用一个统一的时间,称为全球标准时间(UTC,Universal Time Coordinated)。
  • TC与格林尼治平均时(GMT,Greenwich Mean Time,也翻译成:格林威治标准时间)差不多一样
  • CST(北京时间),北京时间,China standard Time,中国标准时间。在时区划分上,属东八区,比协调世界时早8小时,记为UTC+8。
  • 时间戳:自1970年1月1日(08:00:00GMT)至当前时间的总秒数,它也被称为Unix时间戳(unix Timestamp),广泛的运用在知识产权保护、合同签字、金融帐务、电子报价投标、股票交易等方面
  • 格式多种:2050-10-3110:11:11、2050/10/3110/10:10年、月、日、周几等

背景:程序代码中怎么表示时间呢?我需要获取当前时间怎么办

ava.util包提供了Date类来封装当前的日期和时间

构造函数

//当前时间
Date()
//从1970年1月1日起的毫秒数作为参数
Date(long millisec)

常见方法

//返回自1970年1月1日00:00:00GMT以来此Date对象表示的毫秒数。
long getTime()
//调用此方法的Date对象在指定日期之后返回true,否则返回false。
boolean after(Date date)
//调用此方法的Date对象在指定日期之前返回true,否则返回false。
boolean before(Date date)

新版JDK8之时间日期处理类

Java8通过发布新的Date-Time API(JSR310)来进一步加强对日期与时间的处理

新增了很多常见的api,如日期/时间的比较,加减,格式化等

包所在位置 java.time

核心类

LocalDate:不包含具体时间的日期。
LocalTime:不含日期的时间。
LocalDateTime:包含了日期及时间。

LocalDate常用API

 LocalDate today=LocalDate.now();
 system.out.print1n("今天日期:"+today);

//获取年,月,日,周几
system.out.print1n("现在是哪年:"+today.getYear());
system.out.print1n("现在是哪月:"+today.getMonth());
System.out.print1n("现在是哪月(数字):"+today.getMonthValue());
System.out.print1n("现在是几号:"+today.getDayofMonth());
system.out.print1n("现在是周几:"+today.getDayofweek());
//加减年份,加后返回的对象才是修改后的,旧的依旧是旧的LocalDate changeDate=today.plusYears(1);
system.out.print1n("加后是哪年:"+changeDate.getYear());
System.out.print1n("旧的是哪年:"+today.getYear());
//日期比较
system.out.print1n("isafter:"+changeDate.isAfter(today));
//getYear()int 获取当前日期的年份
//getMonth()Month获取当前日期的月份对象
//getMonthValue()int 获取当前日期是第几月
//getDayofweek()Dayofweek 表示该对象表示的日期是星期几
//getDayofMonth()int 表示该对象表示的日期是这个月第几天
//getDayofyear()int 表示该对象表示的日期是今年第几天
//withyear(int year)LocalDate 修改当前对象的年份
//withMonth(int month)LocalDate修改当前对象的月份
//withpayofMonth(int dayofMonth)LocalDate 修改当前对象在当月的日期
//plusYears(long yearsToAdd)Localpate 当前对象增加指定的年份数
//plusMonths(1ong monthsToAdd)LocalDate 当前对象增加指定的月份数
//plusweeks(1ong weeksToAdd)LocalDate 当前对象增加指定的周数
//plusDays(1ong daysToAdd)LocalDate 当前对象增加指定的天数
//minusYears(long yearsTosubtract)LocalDate 当前对象减去指定的年数
//minusMonths(1ong months ToSubtract)LocalDate当前对象减去注定的月数
//minusWeeks(long weeksTosubtract)LocalDate 当前对象减去指定的周数
//minusDays(1ong daysTosubtract)LocalDate当前对象减去指定的天数
//compareTo(ChronoLocalDate other)int 比较当前对象和other对象在时间上的大小,返回值如果为正,则当前对象时间较晚
//isBefore(ChronoLocalDate other)boolean比较当前对象日期是否在other对象日期之前
//isAfter(ChronoLocalDate other)boolean 比较当前对象日期是否在other对象日期之后
//isEqual(ChronoLocalDate other)boolean 比较两个日期对象是否相等

新版JDK8之时间日期格式化

为什么要时间日期做格式化

  • 程序打印,或者网页显示时间日期格式,用户有不同的需求,则需要根据一定的规则进行格式化

常用的占位符

  • y四位数年份
  • M月d日
  • h时在
  • m分
  • S毫秒

JDK8之后:引入线程安全的日期与时

LocalDateTime ldt = LocalDateTime.now();
System.out.println(ldt);
DateTimeFormatter dtf = DateTimeFormatter.ofPattern("yyyy-MM-dd
HH:mm:ss");
String ldtStr = dtf.format(ldt);
System.out.println(ldtStr);

获取指定的日期时间对象LocalDate Time ldt=LocalDate Time.of(2020,11,11,8,20,30);System.out.println(ldt);

计算日期时间差 java.time.Duration

LocalDateTime today = LocalDateTime.now();
System.out.println(today);
LocalDateTime changeDate = LocalDateTime.of(2020,10,1,10,40,30);
System.out.println(changeDate);
Duration duration = Duration.between( today,changeDate);//第⼆二个参数减第⼀一
个参数
System.out.println(duration.toDays());//两个时间差的天数
System.out.println(duration.toHours());//两个时间差的小时数
System.out.println(duration.toMinutes());//两个时间差的分钟数
System.out.println(duration.toMillis());//两个时间差的毫秒数
System.out.println(duration.toNanos());//两个时间差的纳秒数

总结

到此这篇关于Java核心教程之常见时间日期的文章就介绍到这了,更多相关Java常见时间日期内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • Java使用DateFormatter格式化日期时间的方法示例

    本文实例讲述了Java使用DateFormatter格式化日期时间的方法.分享给大家供大家参考,具体如下: Java版本:1.8开始 import java.time.LocalDate; import java.time.LocalDateTime; import java.time.LocalTime; import java.time.ZonedDateTime; import java.time.format.DateTimeFormatter; /** * Created by Fra

  • Java计算两个日期时间之间的天数最简方法

    有一种low的方式,就是你把两个时间都换成秒,然后除以一天的秒数,然后向上取整,就是算的天数.但是这么实现太low啦. jdk有高级的API,我们为啥还要自己去实现呢,问题就是我们不知道. 所以,我在这写个笔记,记录下,jdk 1.8 是怎么做的. /** * 计算两个时间点之间的天数 */ private static void getBetweenDay() { LocalDate start = LocalDate.of(2018, 2, 12); LocalDate now = Loca

  • Java中的日期和时间类以及Calendar类用法详解

    Java日期和时间类简介 Java 的日期和时间类位于 java.util 包中.利用日期时间类提供的方法,可以获取当前的日期和时间,创建日期和时间参数,计算和比较时间. Date 类 Date 类是 Java 中的日期时间类,其构造方法比较多,下面是常用的两个: Date():使用当前的日期和时间初始化一个对象. Date(long millisec):从1970年01月01日00时(格林威治时间)开始以毫秒计算时间,计算 millisec 毫秒.如果运行 Java 程序的本地时区是北京时区(

  • Java将日期类型Date时间戳转换为MongoDB的时间类型数据

    存了一个时间类型(Date)的数据到mongo数据库中,但是前台显示的是一串数字.继而引发了如下问题: Java里面如何把 时间戳 1477387464495 转换为 2016-10-25 17:24:24 期望格式的日期字符串. 因为业务需要,在model里面有个Date类型的字段,然后需要按这个时间类型排序.但是在后台处理完之后,返回到前台,发现时间变成了13位数字,学名叫时间戳.不是我想要的具体时间,不适合展示啊.具体有如下 mongo数据库中存储时间类型的数据具体如下: 然后debug的

  • java基于正则表达式实现时间日期的常用判断操作实例

    本文实例讲述了java基于正则表达式实现时间日期的常用判断操作.分享给大家供大家参考,具体如下: 最近需要完成一个判断用户输入时间日期类型来进行相应操作的业务.实现这个功能自然少不了用到正则表达式,提高正则表达式的话,其实它的用法很简单,只需把这个表格记住并且会灵活运行就可以了. 元字符 描述 \ 将下一个字符标记为一个特殊字符.或一个原义字符.或一个向后引用.或一个八进制转义符.例如,"\n"匹配字符"n"."\\n"匹配一个换行符.序列&qu

  • java获取当前时间和前一天日期(实现代码)

    废话不多说,上代码 复制代码 代码如下: String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/"; Date dNow = new Date();   //当前时间Date dBefore = new Date(); Calendar calendar = Calendar.getInstanc

  • Java对日期Date类进行加减运算、年份加减月份加减、时间差等等

    实现代码一: import java.text.SimpleDateFormat; import java.util.Calendar; import java.util.Date; public class DateTestUtil { public static void main(String[] args) throws Exception { SimpleDateFormat sdf=new SimpleDateFormat("yyyyMMdd"); String str=&

  • Java日期时间字符串和毫秒相互转换的方法

    本文内容大多基于官方文档和网上前辈经验总结,经过个人实践加以整理积累,仅供参考. 1.日期时间字符串转换成毫秒 @Test public void test() throws ParseException { String dateTime = "2016-12-31 12:30:45 123"; Calendar calendar = Calendar.getInstance(); calendar.setTime(new SimpleDateFormat("yyyy-MM

  • java时间戳转日期格式的实现代码

    如下所示: 复制代码 代码如下: String beginDate="1328007600000"; SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd"); String sd = sdf.format(new Date(Long.parseLong(beginDate))); System.out.println(sd);

  • java分割日期时间段代码

    本文实例为大家分享了java切割日期时间段代码,供大家参考,具体内容如下 /** * @author dy * @since 2016-09-18 & JDK 1.8.0_91 */ public class DateCalculate { static Logger logger = LoggerFactory.getLogger(DateCalculate.class); /** * 切割时间段 * * @param dateType 交易类型 M/D/H/N -->每月/每天/每小时/

随机推荐