Java常见API——时间

一. Date类

⑴概述

Date类表示特定的瞬间,精确到毫秒

有了Date类,我们就可以将时间精确到毫秒进行计算

Date是java.util包下的类,因此我们在使用时需要导包

⑵构造方法

如图:两个常用的构造方法

①Date();表示系统当前时间

②Date(long date);在时间原点的基础上加date毫秒

067d0481af934a7c9e7bbc2dab4771a8.png

如图演示:

817ccf6fb9b74d8a97b1d3023be64155.png 

注:因为中国在东八区,要在原有的时间原点上加八个小时

⑶常用方法

①gettime

long gettime()将日期对象转换为对应的时间毫秒值

②settime

void settime(long time)把方法参数给定的毫秒值设置给日期对象

如图演示:

8b39127dc5bf427ba8d4b26933949e7d.png

注:均在时间原点的基础上操作 

二. SimpleDateFormat类

通过Date的gettime方法我们可以知道当前时间毫秒值,当我们想要知道当前时间的具体年月日就可以打印Date对象获取

f2a4bbf5831d4058a984fd438b1138ee.png

但如图的格式我不喜欢,我想换一个x年x月x日这样的格式,这样就需要使用我们的SimpleDateFormate类了 

⑴概述

SimpleDateFormat 是一个以与语言环境有关的方式来格式化和解析日期的具体类。它允许进行格式化(日期 -> 文本)、解析(文本 -> 日期)和规范化

SimpleDateFormat是日期/时间的格式化类,通过这个类可以帮我们完成日期和文本之间的转换,也就是可以在Date对象与String对象之间进行来回转换

据此该类有两个作用

①格式化 : 按照指定的格式,把Date对象转换为String对象

②解析 :按照指定的格式,把String对象转换为Date对象

⑵构造方法

10f909f7de2840fba83fbd035c9bfe28.png

其中的日期和时间格式是由日期和时间模式的字符串指定

如图为API中给出的日期时间元素字母

e43ea3ed2aa240db984e4bcc47ea0969.png

 其中我们需牢牢记住最常用年月日时分秒

⑶常见方法

①format

String format(Date date)将给定的日期格式化为字符串

②parse

Date parse(String date)将给定的字符串解析为日期

下面我们来结合这两个方法来看看构造方法中的默认日期格式是什么?如何填充符合规定的日期格式?

如图:运行发现系统给我们默认的日期格式为

年/月/日 时/分/秒

45c693eeeb494e3ba622d0c9afb4c7a2.png

知道了默认的日期格式,那如果我想要更换日期格式,那该如何规定呢?

如图:我想要使用 年月日 时分秒 的日期格式,就要与日期元素字母结合

如: yyyy年MM月dd日 HH时mm分ss秒

yyyy-MM-dd HH-mm-ss

其中代码的含义为:将Date对象按照给定的日期格式格式化为字符串

916b061b0fe74eae9d5192f1d0bc1b41.png

知道了如何格式化日期,那下面我们就来了解如何解析字符串

如图:运行代码,发现打印出的日期格式就是给定字符串的Date对象

f479ac0a1dd24a88a111d536e2827181.png

其中代码的含义为:将与给定日期格式匹配的字符串解析为Date对象

所以我们可以将SimpleDateFormat对象看作是一种规则,一种日期格式的规则

注:日期格式一定要规范,否则程序会报错

三. Calendar类

通过SimpleDateFormat类我们可以将Date对象转化为便于我们看懂的字符串形式,若我们想要单独获取其中的年月日,就需要进行字符串的截取。但我不想自己写代码进行截取,那有没有一种方法让我们可以调用方法获得?

⑴概述

Calendar类表示一个“日历类”,代表了系统当前时间的日历对象,可以单独修改,获取时间中的年月日

因为Calendar类是一个抽象类,我们不能创建它的对象,我们可以使用它的子类:GregorianCalendar

⑵获取日历对象

我们有两种方式获取GregorianCalendar对象

①直接创建GregorianCalendar对象

②通过Calendar的静态方法getInstance方法获取GregorianCalendar对象

如图:两种方式获取当前日历对象

d887252d8d954200ba1182273f5e4678.png

打印日历对象,我们来看看运行结果

073ddfff746340d6968dcb83c4314aa8.png如图:我们找到打印结果的当前时间 2023年7月3日星期3。但是你看右下角的当前时间是020年8月3日星期4!

结果这么和日期对不上?这就要说起Calendar的两个"反人类"设计了

①MONTH

在Java的月份设计中,1-12月份分别对应0-11,因此我们想要获取现实月份,就要在原有的基础上+1

②DAY_OF_MONTH

在在西方人的观念中,每周是从星期日开始的,他们的星期日就是我们的星期一,他们的星期一就是我们的星期二以此类推

⑶常见方法

①get

int get(int filed)返回给定日历字段的值

如图:我创建了两个方法time和getweek,前者根据get方法获取符合我们认知的日期,后者根据列表法思想获取星期

d713e5ac4dbe45b193da14e9b193c1da.png

aa9a1bc033434ab9bd929928fbeea34a.png

经过get方法再经过一些修改,就可以获取到符合我们认知的日期

②set

824e8542771a4984baed5c79ee796388.png

通过set方法我们可以随意修改当前日历的某个字段日期

③add

void add(int field,int amout)根据日历的规则,为给定的日历字段添加或减去指定的时间量

8ffa19f64ae940f8a7be270c04144327.png

四.趣味小练习

题目:通过本章知识计算你活了多少天

dee5a28f60a7442193e4b13698061b40.png

你认为计算的对不对呢?还是自己查查看看结果是不是对的呢?

 

 

 

 

 

 

 

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
HDFS是Hadoop分布式文件系统,它提供了Java API来进行文件读写操作。在HDFS中,文件被分成多个块并存储在不同的节点上,因此需要使用分布式文件系统的API来进行文件读写操作。 HDFS Java API提供了以下几个类来进行文件读写操作: 1. FileSystem:表示一个文件系统对象,可以通过它来获取文件系统的配置信息、创建文件、删除文件等操作。 2. Path:表示一个文件或目录的路径。 3. FSDataInputStream:表示一个输入流,可以用来读取HDFS中的文件。 4. FSDataOutputStream:表示一个输出流,可以用来向HDFS中写入数据。 下面是一个简单的示例代码,演示如何使用HDFS Java API进行文件读写操作: ```java import org.apache.hadoop.conf.Configuration; import org.apache.hadoop.fs.FileSystem; import org.apache.hadoop.fs.Path; import org.apache.hadoop.fs.FSDataInputStream; import org.apache.hadoop.fs.FSDataOutputStream; public class HdfsExample { public static void main(String[] args) throws Exception { // 创建一个Configuration对象,用于获取Hadoop配置信息 Configuration conf = new Configuration(); // 获取HDFS文件系统对象 FileSystem fs = FileSystem.get(conf); // 创建一个Path对象,表示要读取的文件路径 Path inputPath = new Path("/input/test.txt"); // 创建一个FSDataInputStream对象,用于读取文件 FSDataInputStream in = fs.open(inputPath); // 读取文件内容 byte[] buffer = new byte[1024]; int len = in.read(buffer); while (len > 0) { System.out.write(buffer, 0, len); len = in.read(buffer); } // 关闭输入流 in.close(); // 创建一个Path对象,表示要写入的文件路径 Path outputPath = new Path("/output/test.txt"); // 创建一个FSDataOutputStream对象,用于写入文件 FSDataOutputStream out = fs.create(outputPath); // 写入文件内容 String content = "Hello, HDFS!"; out.write(content.getBytes()); // 关闭输出流 out.close(); } } ```

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

汤姆大聪明

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值