java1.8 日期_JAVA中JDK1.8的LocalDateTime日期类的操作方法

关键类

Instant:瞬时时间。

LocalDate:本地日期,不包含具体时间, 格式 yyyy-MM-dd。

LocalTime:本地时间,不包含日期. 格式 yyyy-MM-dd HH:mm:ss.SSS 。

LocalDateTime:组合了日期和时间,但不包含时差和时区信息。

ZonedDateTime:最完整的日期时间,包含时区和相对UTC或格林威治的时差。

获取当前的日期时间

//本地日期,不包括时分秒

LocalDate nowDate =LocalDate.now();//本地日期,包括时分秒

LocalDateTime nowDateTime =LocalDateTime.now();

System.out.println("当前时间:"+nowDate);

System.out.println("当前时间:"+nowDateTime);//当前时间:2018-12-19//当前时间:2018-12-19T15:24:35.822

获取当前的年月日时分秒

//获取当前的时间,包括毫秒

LocalDateTime ldt =LocalDateTime.now();

System.out.println("当前年:"+ldt.getYear()); //2018

System.out.println("当前年份天数:"+ldt.getDayOfYear());//172

System.out.println("当前月:"+ldt.getMonthValue());

System.out.println("当前时:"+ldt.getHour());

System.out.println("当前分:"+ldt.getMinute());

System.out.println("当前时间:"+ldt.toString());//当前年:2018//当前年份天数:353//当前月:12//当前时:15//当前分:24//当前时间:2018-12-19T15:24:35.833

格式化时间

LocalDateTime ldt =LocalDateTime.now();

System.out.println("格式化时间: "+ ldt.format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss.SSS")));//格式化时间:2018-12-19 15:37:47.119

时间增减

LocalDateTime ldt =LocalDateTime.now();

System.out.println("后5天时间:"+ldt.plusDays(5));

System.out.println("前5天时间并格式化:"+ldt.minusDays(5).format(DateTimeFormatter.ofPattern("yyyy-MM-dd"))); //2018-06-16

System.out.println("前一个月的时间:"+ldt2.minusMonths(1).format(DateTimeFormatter.ofPattern("yyyyMM"))); //2018-06-16

System.out.println("后一个月的时间:"+ldt2.plusMonths(1)); //2018-06-16

System.out.println("指定2099年的当前时间:"+ldt.withYear(2099)); //2099-06-21T15:07:39.506//后5天时间:2018-12-24T15:50:37.508//前5天时间并格式化:2018-12-14//前一个月的时间:201712//后一个月的时间:2018-02-04T09:19:29.499//指定2099年的当前时间:2099-12-19T15:50:37.508

创建指定时间

LocalDate ld3=LocalDate.of(2017, Month.NOVEMBER, 17);

LocalDate ld4=LocalDate.of(2018, 02, 11);

时间相差比较

具体相差的年月日

LocalDate ld=LocalDate.parse("2017-11-17");

LocalDate ld2=LocalDate.parse("2018-01-05");

Period p=Period.between(ld, ld2);

System.out.println("相差年: "+p.getYears()+" 相差月 :"+p.getMonths() +" 相差天:"+p.getDays());//相差年: 0 相差月 :1 相差天:19

注:这里的月份是不满足一年,天数是不满足一个月的。这里实际相差的是1月19天,也就是49天。

相差总数的时间

ChronoUnit 日期周期单位的标准集合。 也可以计算相差时分秒。

LocalDate startDate = LocalDate.of(2017, 11, 17);

LocalDate endDate= LocalDate.of(2018, 01, 05);

System.out.println("相差月份:"+ChronoUnit.MONTHS.between(startDate, endDate));

System.out.println("两月之间的相差的天数 : " +ChronoUnit.DAYS.between(startDate, endDate));//相差月份:1//两天之间的差在天数 : 49

精度时间相差

Duration 这个类以秒和纳秒为单位建模时间的数量或数量。

Instant inst1 =Instant.now();

System.out.println("当前时间戳 : " +inst1);

Instant inst2= inst1.plus(Duration.ofSeconds(10));

System.out.println("增加之后的时间 : " +inst2);

System.out.println("相差毫秒 : " +Duration.between(inst1, inst2).toMillis());

System.out.println("相毫秒 : " +Duration.between(inst1, inst2).getSeconds());//当前时间戳 : 2018-12-19T08:14:21.675Z//增加之后的时间 : 2018-12-19T08:14:31.675Z//相差毫秒 : 10000//相毫秒 : 10

时间大小比较

LocalDateTime ldt4 =LocalDateTime.now();

LocalDateTime ldt5= ldt4.plusMinutes(10);

System.out.println("当前时间是否大于:"+ldt4.isAfter(ldt5));

System.out.println("当前时间是否小于"+ldt4.isBefore(ldt5));//false//true

时区时间计算

得到其他时区的时间。

通过Clock时钟类获取计算

Clock时钟类用于获取当时的时间戳,或当前时区下的日期时间信息。

Clock clock =Clock.systemUTC();

System.out.println("当前时间戳 : " +clock.millis());

Clock clock2= Clock.system(ZoneId.of("Asia/Shanghai"));

System.out.println("亚洲上海此时的时间戳:"+clock2.millis());

Clock clock3= Clock.system(ZoneId.of("America/New_York"));

System.out.println("美国纽约此时的时间戳:"+clock3.millis());//当前时间戳 : 1545209277657//亚洲上海此时的时间戳:1545209277657//美国纽约此时的时间戳:1545209277658

通过ZonedDateTime类和ZoneId

ZoneId zoneId= ZoneId.of("America/New_York");

ZonedDateTime dateTime=ZonedDateTime.now(zoneId);

System.out.println("美国纽约此时的时间 : " + dateTime.format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss.SSS")));

System.out.println("美国纽约此时的时间 和时区: " +dateTime);//美国纽约此时的时间 : 2018-12-19 03:52:22.494//美国纽约此时的时间 和时区: 2018-12-19T03:52:22.494-05:00[America/New_York]

Java 8日期时间API总结:

提供了javax.time.ZoneId 获取时区。

提供了LocalDate和LocalTime类。

Java 8 的所有日期和时间API都是不可变类并且线程安全,而现有的Date和Calendar API中的java.util.Date和SimpleDateFormat是非线程安全的。

主包是 java.time,包含了表示日期、时间、时间间隔的一些类。里面有两个子包java.time.format用于格式化, java.time.temporal用于更底层的操作。

时区代表了地球上某个区域内普遍使用的标准时间。每个时区都有一个代号,格式通常由区域/城市构成(Asia/Tokyo),在加上与格林威治或 UTC的时差。例如:东京的时差是+09:00。

OffsetDateTime类实际上组合了LocalDateTime类和ZoneOffset类。用来表示包含和格林威治或UTC时差的完整日期(年、月、日)和时间(时、分、秒、纳秒)信息。

DateTimeFormatter 类用来格式化和解析时间。与SimpleDateFormat不同,这个类不可变并且线程安全,需要时可以给静态常量赋值。DateTimeFormatter类提供了大量的内置格式化工具,同时也允许你自定义。在转换方面也提供了parse()将字符串解析成日期,如果解析出错会抛出DateTimeParseException。DateTimeFormatter类同时还有format()用来格式化日期,如果出错会抛出DateTimeException异常。

再补充一点,日期格式“MMM d yyyy”和“MMM dd yyyy”有一些微妙的不同,第一个格式可以解析“Jan 2 2014”和“Jan 14 2014”,而第二个在解析“Jan 2 2014”就会抛异常,因为第二个格式里要求日必须是两位的。如果想修正,你必须在日期只有个位数时在前面补零,就是说“Jan 2 2014”应该写成 “Jan 02 2014”。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
目标检测(Object Detection)是计算机视觉领域的一个核心问题,其主要任务是找出图像所有感兴趣的目标(物体),并确定它们的类别和位置。以下是对目标检测的详细阐述: 一、基本概念 目标检测的任务是解决“在哪里?是什么?”的问题,即定位出图像目标的位置并识别出目标的类别。由于各类物体具有不同的外观、形状和姿态,加上成像时光照、遮挡等因素的干扰,目标检测一直是计算机视觉领域最具挑战性的任务之一。 二、核心问题 目标检测涉及以下几个核心问题: 分类问题:判断图像的目标属于哪个类别。 定位问题:确定目标在图像的具体位置。 大小问题:目标可能具有不同的大小。 形状问题:目标可能具有不同的形状。 三、算法分类 基于深度学习的目标检测算法主要分为两大类: Two-stage算法:先进行区域生成(Region Proposal),生成有可能包含待检物体的预选框(Region Proposal),再通过卷积神经网络进行样本分类。常见的Two-stage算法包括R-CNN、Fast R-CNN、Faster R-CNN等。 One-stage算法:不用生成区域提议,直接在网络提取特征来预测物体分类和位置。常见的One-stage算法包括YOLO系列(YOLOv1、YOLOv2、YOLOv3、YOLOv4、YOLOv5等)、SSD和RetinaNet等。 四、算法原理 以YOLO系列为例,YOLO将目标检测视为回归问题,将输入图像一次性划分为多个区域,直接在输出层预测边界框和类别概率。YOLO采用卷积网络来提取特征,使用全连接层来得到预测值。其网络结构通常包含多个卷积层和全连接层,通过卷积层提取图像特征,通过全连接层输出预测结果。 五、应用领域 目标检测技术已经广泛应用于各个领域,为人们的生活带来了极大的便利。以下是一些主要的应用领域: 安全监控:在商场、银行
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值