Java 获取 ISO 8601 格式的当前时间戳
在 Java 或任何其他编程语言中,将字符串转换为日期是一项基本技能。 以字符串格式存储日期然后将其转换为 Date 对象以在项目中继续进行非常简单。
本文将教我们如何获取 ISO 8601 格式的当前时间戳。 让我们开始学习 ISO 8601 格式以及为什么以及如何在我们的项目中使用它。
Java 中 ISO 8601 格式的重要性和用法
当我们必须安排会议或与客户打交道时,日期和时间格式尤为重要。 然而,在这个数字时代,似乎并不容易有一个标准格式来指定每个人都容易理解的全球不同时区。
国际标准ISO 8601格式正是解决这一问题的格式。 使用国际标准化组织 (ISO) 日期/时间格式,我们可以指定一个数字日期/时间,其中时间是可选的。
跨境的所有利益相关者都可以使用此国际标准指定日期/时间。 请记住,ISO 8601 日期表示基于公历。
在 ISO 8601 格式中,我们指定以年开头的日期/时间,然后是月、日、小时、分钟、秒和毫秒。
例如,2022-09-30 15:00:00.000 显示 2022 年 9 月 30 日下午 3 点(这个时间戳是当地时间,因为我们没有指定时区偏移量,我们将在本教程的后面部分学习)。 以下是使用 ISO 8601 的日期/时间的表格表示。
ISO 8601 格式| | 值范围 |
---|---|
Year (Y) |YYYY,四位数字。 我们也可以将其缩写为两位数。 | |
Month (M) |MM, 01-12 | |
Week (W) |WW, 01-53 | |
Day (D) |D, week’s day, 1-7 | |
Hour (h) |hh, 00-23 其中 24:00:00 作为结束时间 | |
Minutes (m) |mm, 00-59 | |
Seconds (s)| ss, 00-59 | |
Decimal Fraction (f)| 秒的分数,任何精度 |
在 ISO 8601 格式中使用 T 和 Z
假设我们有一个时间戳 2022-09-30T20:18:46.384Z
。 在这里,T 不代表任何东西; 它只是 ISO 8601 日期/时间格式所需的分隔符。
我们可以将 T 理解为时间的缩写,而 Z 用于零时间戳,因为它与 UTC(协调世界时)相差 0。
让我们通过以下示例了解 T 和 Z 的使用。
- 2022 年 9 月 30 日 2022-09-30T15:50+00 - 下午 3:30,通用时区。
- 2022-09-30T15:50+00Z - 2022年9月30日下午3:30,时区为世界时加Z时区。
- 2022 年 9 月 30 日 2022-09-30T15:50-04:00 - 下午 3:30,纽约时区(UTC 夏令时)。
我们已经了解了 ISO 8601 日期格式。 让我们看看我们如何在 Java 中做到这一点,并以 UTC 格式获取当前日期/时间。
使用 UTC 时区将当前时间戳转换为 ISO 8601
示例代码:
import java.text.SimpleDateFormat;
import java.text.DateFormat;
import java.util.Date;
import java.util.TimeZone;
public class Test{
public static void main(String args[]){
TimeZone timezone = TimeZone.getTimeZone("UTC");
//"Z" indicates UTC, which means no timezone offset
DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss'Z'");
dateFormat.setTimeZone(timezone);
String ISODate = dateFormat.format(new Date());
System.out.println(ISODate);
}
}
输出:
2022-09-30T07:20:52Z
在Test的 main()
方法中,我们首先使用了 getTimeZone()
方法,它接受一个字符串类型的参数来获取时区。 此方法返回与 DateFormat 日历关联的时区。
然后,我们使用 SimpleDateFormat 类,它有助于解析和格式化数据。 它帮助我们将日期从一种格式转换为另一种格式。
我们通过指定所需的日期/时间格式来实例化此类。
接下来,我们使用 setTimeZone()
方法设置时区并传递一个参数,该参数保存 getTimeZone() 方法返回的值。 之后,我们使用 dateFormat 对象来格式化给定的日期。
最后,我们打印日期,现在是 ISO 8601 格式(见上面给出的输出)。
现在,问题是,我们为什么要使用这种特定格式? 我们有一些优势吗? 让我们在下面看看它们。
使用 ISO 8601 格式的优势
以下是使用 ISO 8601 格式相对于其他常见变体的一些优势:
- 使用软件很容易读/写。
- 用字符串比较很容易比较/排序。
- 日期后跟时间的字符串很容易比较/排序。 例如,2022-09-30 10:15:00。
- 无论使用何种国家语言,它都易于理解,并且不会与其他常用的日期变体混淆。
- 符号长度固定且简洁。 此外,四位数的年份在世纪之交不会造成任何问题。
- 这种日期格式年-月-日很普遍,例如在韩国、匈牙利、瑞典、日本和其他国家/地区。
此格式与中文日期表示相同,这意味着将近 25% 的人已经熟悉此系统。
正如我们所见,使用 ISO 8601 格式具有多重优势,而且易于使用和理解。 因此,在应用程序中学习和使用这种日期格式很重要。
相关文章
在 Java 中获取文件大小
发布时间:2023/05/01 浏览次数:139 分类:Java
-
Java 提供了不同的方法来获取文件的字节大小。 本教程演示了在 Java 中获取文件大小的不同方法。使用 Java IO 的文件类获取文件大小 Java IO 包的 File 类提供了以字节为单位获取文件大小的功能。
Java 中的文件分隔符
发布时间:2023/05/01 浏览次数:108 分类:Java
-
本篇文章介绍了 Java 中的文件分隔符。Java 中的文件分隔符 文件分隔符是用来分隔目录的字符; 例如,Unix 使用 /,Windows 使用 \ 作为文件分隔符。
Java 中的文件过滤器
发布时间:2023/05/01 浏览次数:193 分类:Java
-
本篇文章介绍如何在 Java 中使用 FileFilter。FileFilter 用于过滤具有特定扩展名的文件。 Java内置包IO和Apache Commons IO为FileFilter提供了类和接口来进行文件过滤操作。
在 Java 中获取数组的子集
发布时间:2023/05/01 浏览次数:142 分类:Java
-
本篇文章介绍了几种在 Java 中获取数组子集的方法。使用 Arrays.copyOf() 方法获取数组的子集 使用 Arrays.copyOfRange() 方法获取数组的子集
用 Java 填充二维数组
发布时间:2023/05/01 浏览次数:110 分类:Java
-
二维数组是基于表结构的,即行和列,填充二维数组不能通过简单的添加到数组操作来完成。 本篇文章介绍如何在 Java 中填充二维数组。
计算 Java 数组中的重复元素
发布时间:2023/05/01 浏览次数:202 分类:Java
-
本篇文章介绍Java计算数组中重复元素的方法。计算 Java 数组中的重复元素。我们可以创建一个程序来计算数组中的重复元素。 该数组可以是未排序的,也可以是已排序的。
Java 中 List 和 Arraylist 的区别
发布时间:2023/05/01 浏览次数:90 分类:Java
-
表示为单个单元的一组单个对象称为集合。 在 Java 中,Collection 是一个具有多个已定义接口和类的框架,用于将一组对象表示为一个单元。 它允许我们操纵
Java 中的 Vector 和 ArrayList
发布时间:2023/05/01 浏览次数:52 分类:Java
-
ArrayList 和 Vector 都实现了 List 接口,都可以作为内部数据结构的数组。 但是,尽管它们大部分相同,但它们也有不同之处。