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/12/17 浏览次数:217 分类:Java
-
本篇文章主要介绍如何在 Java 中制造程序延迟。本教程介绍了如何在 Java 中制造程序延时,并列举了一些示例代码来了解它。
如何在 Java 中把 Hashmap 转换为 JSON 对象
发布时间:2023/12/17 浏览次数:187 分类:Java
-
它描述了允许我们将哈希图转换为简单的 JSON 对象的方法。本文介绍了在 Java 中把 Hashmap 转换为 JSON 对象的方法。我们将看到关于创建一个 hashmap,然后将其转换为 JSON 对象的详细例子。
如何在 Java 中按值排序 Map
发布时间:2023/12/17 浏览次数:171 分类:Java
-
本文介绍了如何在 Java 中按值对 Map 进行排序。本教程介绍了如何在 Java 中按值对 Map
进行排序,并列出了一些示例代码来理解它。
如何在 Java 中打印 HashMap
发布时间:2023/12/17 浏览次数:192 分类:Java
-
本帖介绍了如何在 Java 中打印 HashMap。本教程介绍了如何在 Java 中打印 HashMap 元素,还列举了一些示例代码来理解这个主题。
在 Java 中更新 Hashmap 的值
发布时间:2023/12/17 浏览次数:146 分类:Java
-
本文介绍了如何在 Java 中更新 HashMap 中的一个值。本文介绍了如何在 Java 中使用 HashMap 类中包含的两个方法-put() 和 replace() 更新 HashMap 中的值。
Java 中的 hashmap 和 map 之间的区别
发布时间:2023/12/17 浏览次数:79 分类:Java
-
本文介绍了 Java 中的 hashmap 和 map 接口之间的区别。本教程介绍了 Java 中 Map 和 HashMap 之间的主要区别。在 Java 中,Map 是用于以键值对存储数据的接口,
在 Java 中获取用户主目录
发布时间:2023/12/17 浏览次数:218 分类:Java
-
这篇文章向你展示了如何在 Java 中获取用户主目录。本教程介绍了如何在 Java 中获取用户主目录,并列出了一些示例代码以指导你完成该主题。
Java 中 size 和 length 的区别
发布时间:2023/12/17 浏览次数:179 分类:Java
-
这篇文章教你如何知道 Java 中大小和长度之间的区别。本教程介绍了 Java 中大小和长度之间的区别。我们还列出了一些示例代码以帮助你理解该主题。
Java 中的互斥锁
发布时间:2023/12/17 浏览次数:111 分类:Java
-
了解有关 Java 中互斥锁的一切,在计算机科学领域,互斥或互斥被称为并发控制的属性。每台计算机都使用称为线程的最小程序指令序列。有一次,计算机在一个线程上工作。为了更好地理解,