首页 > 其他分享 >3.3. 日期与时间类(Date、Calendar、LocalDate等)

3.3. 日期与时间类(Date、Calendar、LocalDate等)

时间:2023-05-30 14:03:08浏览次数:36  
标签:System println 日期 3.3 Date Calendar out

在Java中,我们经常需要处理日期和时间。Java提供了一些类来帮助我们完成这些任务,如DateCalendarLocalDateLocalTimeLocalDateTimeZonedDateTime等。我们将分别介绍这些类,并给出相应的示例。

1. Date类

Date类是Java提供的一个表示日期和时间的类。但是,由于设计上的缺陷,许多方法已经被废弃。因此,我们更推荐使用Calendar类和Java 8中引入的新的日期时间API。

以下是Date类的一些常用方法:

  • Date():构造一个表示当前日期和时间的Date对象。
  • getTime():返回自1970年1月1日0时0分0秒以来的毫秒数。

2. Calendar类

Calendar类是一个抽象类,它提供了一些方法来操作日期和时间。Calendar类的子类如GregorianCalendar,它表示公历日期。Calendar类的常用方法有:

  • getInstance():返回一个表示当前日期和时间的Calendar对象。
  • get(int field):返回指定字段的值。
  • set(int field, int value):设置指定字段的值。
  • add(int field, int amount):给指定字段添加指定的值。
  • getTime():返回表示Calendar对象的日期和时间的Date对象。

以下是Calendar类的一些常量:

  • YEAR:年
  • MONTH:月
  • DATE:日
  • HOUR:小时(12小时制)
  • HOUR_OF_DAY:小时(24小时制)
  • MINUTE:分
  • SECOND:秒

3. LocalDate、LocalTime、LocalDateTime和ZonedDateTime类

Java 8引入了新的日期时间API,包括LocalDateLocalTimeLocalDateTimeZonedDateTime等类。这些类是不可变的,线程安全的,并且设计上更符合实际需求。

以下是这些类的一些常用方法:

  • now():返回表示当前日期或时间的对象。
  • of(...):根据指定的参数创建对象。
  • plusDays(long daysToAdd):返回增加指定天数后的对象。
  • minusDays(long daysToSubtract):返回减去指定天数后的对象。
  • plusHours(long hoursToAdd):返回增加指定小时数后的对象。
  • minusHours(long hoursToSubtract):返回减去指定小时数后的对象。
  • format(DateTimeFormatter formatter):使用指定的格式化器将对象格式化为字符串。

4. 示例

下面是一个使用日期和时间类的示例:

import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.time.LocalDate;
import java.time.LocalTime;
import java.time.LocalDateTime;
import java.time.ZonedDateTime;
import java.time.format.DateTimeFormatter;

public class Main {
    public static void main(String[] args) {
        // 使用Date类
        Date date = new Date();
        System.out.println("当前日期和时间:" + date);

        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        System.out.println("格式化后的日期和时间:" + sdf.format(date));

        // 使用Calendar类
        Calendar calendar = Calendar.getInstance();
        System.out.println("年:" + calendar.get(Calendar.YEAR));
        System.out.println("月:" + (calendar.get(Calendar.MONTH) + 1)); // 月份从0开始,所以需要加1
        System.out.println("日:" + calendar.get(Calendar.DATE));
        System.out.println("小时:" + calendar.get(Calendar.HOUR_OF_DAY));
        System.out.println("分钟:" + calendar.get(Calendar.MINUTE));
        System.out.println("秒:" + calendar.get(Calendar.SECOND));

        // 使用LocalDate、LocalTime和LocalDateTime类
        LocalDate localDate = LocalDate.now();
        LocalTime localTime = LocalTime.now();
        LocalDateTime localDateTime = LocalDateTime.now();

        System.out.println("当前日期:" + localDate);
        System.out.println("当前时间:" +localTime);
        System.out.println("当前日期和时间:" + localDateTime);

        // 使用ZonedDateTime类
        ZonedDateTime zonedDateTime = ZonedDateTime.now();
        System.out.println("当前日期和时间(带时区):" + zonedDateTime);

        // 格式化日期和时间
        DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
        System.out.println("格式化后的日期和时间:" + localDateTime.format(formatter));

        // 日期和时间的计算
        LocalDate tomorrow = localDate.plusDays(1);
        System.out.println("明天的日期:" + tomorrow);

        LocalTime oneHourLater = localTime.plusHours(1);
        System.out.println("一小时后的时间:" + oneHourLater);

        LocalDateTime oneWeekLater = localDateTime.plusDays(7);
        System.out.println("一周后的日期和时间:" + oneWeekLater);
    }
}

执行以上代码,将输出类似如下的结果:

当前日期和时间:Tue May 30 15:23:45 CST 2023
格式化后的日期和时间:2023-05-30 15:23:45
年:2023
月:5
日:30
小时:15
分钟:23
秒:45
当前日期:2023-05-30
当前时间:15:23:45.123456789
当前日期和时间:2023-05-30T15:23:45.123456789
当前日期和时间(带时区):2023-05-30T15:23:45.123456789+08:00[Asia/Shanghai]
格式化后的日期和时间:2023-05-30 15:23:45
明天的日期:2023-05-31
一小时后的时间:16:23:45.123456789
一周后的日期和时间:2023-06-06T15:23:45.123456789

以上就是Java常用类库中的日期与时间类的简介和示例。希望这些内容能帮助你理解和使用这些类。如果有任何疑问,请随时提问,我会尽力帮助你。

file

file

参考文章:

https://mp.weixin.qq.com/s/dV2JzXfgjDdCmWRmE0glDA

https://mp.weixin.qq.com/s/an83QZOWXHqll3SGPYTL5g

标签:System,println,日期,3.3,Date,Calendar,out
From: https://blog.51cto.com/u_14241752/6378482

相关文章

  • 6-1Date类
    本题要求实现一个日期类定义,根据所定义的类可以完成相关的类测试。Date类定义:根据Date被使用的情况,进行Date类定义,要求通过构造函数进行日期初始化,并通过display()函数进行日期格式显示,显示格式为"月/日/年"#include<bits/stdc++.h>usingnamespacestd;classDate{ public: Dat......
  • 不推荐使用Date日期和Calendar日期
    很神奇,为什么java中不推荐使用Date与Calendar日期了,很多时候初学者在刚学习java时,大部分使用的日期都是Date与Calendar,只有及少数个别使用的LocalDateTime日期Date与Calendar存在的共性问题毫秒值与日期直接转换麻烦和繁琐,然后通过毫秒值来计算时间的差额步骤较多,并且......
  • @Validated注解的使用
    @Validated注解修饰controller的入参参数上入参参数内部使用其他细节注解进行判断看样例@ApiOperation(value="添加修改ump告警规则")@PostMapping("config")publicResultsaveOrUpdateConfig(@Validated@RequestBodyRadarScreenUmpConfigconfig){ radarScreenUmpS......
  • Date 和 Calendar
    //在Java平台首次发布时,它唯一支持日历计算类的就是Date类。//这个类在能力方面是受限的,特别是当需要支持国际化时,它就暴露出了一个基本的设计缺陷:Date 实例是易变的。//在1.1版中,Calendar类被添加到了Java平台中,以矫正Date的缺点,由此大部分的Date方法就都被弃用了。//Date......
  • MySQL中时间函数NOW()和SYSDATE()的区别
    mysql中日期函数还是比较常用的。主要有NOW()和SYSDATE()两种,虽然都表示当前时间,但使用上有一点点区别。NOW()取的是语句开始执行的时间,SYSDATE()取的是动态的实时时间。因为NOW()取自mysql的一个变量”TIMESTAMP”,而这个变量在语句开始执行的时候就设定好了,因此在整个语句......
  • el-date-picker type="daterange" 二个日期之间的range-separator样式
     中间的这个“至”的颜色设置从源代码中可以看出: 这样中间的字的颜色就改为白色了。 ......
  • 3.3 线性回归的简洁实现
    importnumpyasnpimporttorchfromtorch.utilsimportdatafromd2limporttorchasd2lfromtorchimportnn#nn是神经网络(NeuralNetworks)的缩写3.3.1生成数据集true_w=torch.tensor([2,-3.4])#与上一节类似生成数据集true_b=4.2features,labels=......
  • Python 中处理日期和时间的模块 datetime
     datetime提供了一些常用的方法。以下是一些常用的 datetime 方法:1.datetime.datetime.now():获取当前时间。例如:datetime.datetime.now() 返回当前时间的 datetime 对象。#test_demo.pyimportdatetimenow=datetime.datetime.now()print(type(now))#<class'......
  • Jmeter函数助手29-dateTimeConvert
    dateTimeConvert函数用于将源格式进行目标格式的转换。格式化时间:传入时间参数,此处格式需要与源时间格式一致源时间格式:传入参数的时间格式目标时间格式:想要转换成的格式 1、将源格式转换成目标格式,注意传入的时间需要与源格式一致。${__dateTimeConvert(${lastday},YYYY......
  • POJ 2080 Calendar
    题目链接:http://poj.org/problem?id=2080题目不是很难,也没什么说的,直接看代码吧:#include<iostream>#include<stdio.h>usingnamespacestd;intyear(intm){ if(m%4==0&&m%100!=0||m%400==0) return1; else return0;}intmain(){ intn,i,j......