当前位置:首页 » 《我的小黑屋》 » 正文

Java中的时间戳【详解】

3 人参与  2024年09月13日 18:41  分类 : 《我的小黑屋》  评论

点击全文阅读


一.何为Java时间戳

在Java中,时间戳通常指的是自1970年1月1日午夜(UTC)以来的毫秒数。

这个概念在Java中主要通过java.util.Date类和java.sql.Timestamp类来表示

而在Java 8及以后的版本中,引入了新的日期时间API,即java.time包,提供了更多的功能和灵活性。

二.获取当前时间戳

1.使用System.currentTimeMillis()方法

long currentTimestamp = System.currentTimeMillis();

2. 使用java.util.Date

java.util.Date类可以用来表示特定的瞬间,它包含了自1970年1月1日午夜(UTC)以来的毫秒数。

// 创建一个Date对象表示当前时间Date now = new Date();long timestamp = now.getTime(); // 获取时间戳// 从一个已知的时间戳创建Date对象long timestamp = ... // 假设你有一个时间戳Date date = new Date(timestamp);

3. 使用java.sql.Timestamp

java.sql.Timestamp类是java.util.Date的一个子类,它提供了更高精度的时间表示,包括纳秒

// 创建一个Timestamp对象表示当前时间Timestamp now = new Timestamp(System.currentTimeMillis());// 从一个已知的时间戳创建Timestamp对象long timestamp = ... // 假设你有一个时间戳Timestamp ts = new Timestamp(timestamp);

4.Java 8中的 java.time

Java 8引入了一个新的日期时间API,提供了更好的处理日期和时间的类。其中,Instant类可以用来表示时间戳。

// 获取当前时间的Instant对象Instant now = Instant.now();long timestamp = now.toEpochMilli(); // 获取时间戳// 从一个已知的时间戳创建Instant对象long timestamp = ... // 假设你有一个时间戳Instant instant = Instant.ofEpochMilli(timestamp);

三.格式化时间戳

要将时间戳转换为可读的日期时间格式,可以使用SimpleDateFormat(Java 8之前)或DateTimeFormatter(Java 8及以后)。

1.使用 SimpleDateFormat

// 假设你有一个时间戳long timestamp = ...// 创建SimpleDateFormat对象SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");// 将时间戳转换为Date对象,然后格式化String formattedDate = sdf.format(new Date(timestamp));System.out.println(formattedDate);

2.使用 DateTimeFormatter

// 假设你有一个时间戳long timestamp = ...// 创建DateTimeFormatter对象DateTimeFormatter dtf = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");// 将时间戳转换为Instant对象,然后转换为LocalDateTime对象,最后格式化Instant instant = Instant.ofEpochMilli(timestamp);LocalDateTime ldt = LocalDateTime.ofInstant(instant, ZoneId.systemDefault());String formattedDate = ldt.format(dtf);System.out.println(formattedDate);

四.时间戳与字符串的转换

1.将时间戳转换为字符串

// 假设你有一个时间戳long timestamp = ...// 使用SimpleDateFormatSimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");String dateStr = sdf.format(new Date(timestamp));// 使用DateTimeFormatterDateTimeFormatter dtf = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");Instant instant = Instant.ofEpochMilli(timestamp);LocalDateTime ldt = LocalDateTime.ofInstant(instant, ZoneId.systemDefault());String dateStr = ldt.format(dtf);

2.将字符串转换为时间戳

// 假设你有一个日期时间的字符串表示String dateStr = "2023-04-01 12:34:56";// 使用SimpleDateFormatSimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");try {    Date date = sdf.parse(dateStr);    long timestamp = date.getTime();} catch (ParseException e) {    e.printStackTrace();}// 使用DateTimeFormatterDateTimeFormatter dtf = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");LocalDateTime ldt = LocalDateTime.parse(dateStr, dtf);Instant instant = ldt.atZone(ZoneId.systemDefault()).toInstant();long timestamp = instant.toEpochMilli();

五.时区处理

在处理时间戳时,时区是一个非常重要的因素。Java中的ZoneId类可以用来表示不同的时区。

// 获取当前时区的偏移量ZoneId currentZone = ZoneId.systemDefault();ZonedDateTime zdt = ZonedDateTime.now(currentZone);long offsetInMillis = zdt.getOffset().getTotalSeconds() * 1000;

六.时间戳的加减

要对时间戳进行加减操作,可以使用java.time.Duration类或直接对毫秒数进行加减。

// 假设你有一个时间戳long timestamp = ...// 增加一小时的时间戳Instant instant = Instant.ofEpochMilli(timestamp);Duration oneHour = Duration.ofHours(1);Instant newInstant = instant.plus(oneHour);long newTimestamp = newInstant.toEpochMilli();// 或者直接对毫秒数进行加减long newTimestamp = timestamp + (60 * 60 * 1000); // 增加一小时

点击全文阅读


本文链接:http://zhangshiyu.com/post/159499.html

<< 上一篇 下一篇 >>

  • 评论(0)
  • 赞助本站

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

最新文章

  • 免费完结版小说回家过年,我把侄子送进了少管所_回家过年,我把侄子送进了少管所(林晓孟倩林浩)免费小说全本_全本免费完结小说回家过年,我把侄子送进了少管所
  • 书荒宝藏文《简星星江桁》简星星江桁(小说全文阅读无弹窗)全文免费阅读
  • 《江雨柔苏宸》已完结(江雨柔苏宸)热门小说完整版)全文阅读笔趣阁
  • 回家过年,我把侄子送进了少管所(林晓孟倩林浩)阅读免费小说_全本免费小说阅读回家过年,我把侄子送进了少管所(林晓孟倩林浩)最新更新
  • 最新免费小说除夕夜大伯心梗,我替婆婆送花圈油爱芳瑶瑶_除夕夜大伯心梗,我替婆婆送花圈(油爱芳瑶瑶)热门小说推荐
  • 搬空钱财:下乡的娇知青她军婚了全集姜温婉周云霆(搬空钱财:下乡的娇知青她军婚了全集)全文免费阅读无弹窗大结局_(姜温婉周云霆免费阅读全文大结局)最新章节列表_笔趣阁(姜温婉周云霆) -
  • 情深几许再难圆热门小说免费(陈墨燃沈心宁)全文免费阅读无弹窗大结局_(情深几许再难圆热门小说小说免费阅读)最新章节列表_笔趣阁(情深几许再难圆热门小说) -
  • 伽蓝如梦情如尘完结版阅读(林清规梵清)全文免费阅读无弹窗大结局_(伽蓝如梦情如尘完结版阅读)林清规梵清最新章节列表_笔趣阁(伽蓝如梦情如尘完结版阅读) -
  • 和总裁上恋综后,全网磕疯了(谢弥沈爅卿)阅读 -
  • 重生后,弟弟抢走了我的人生(李子豪李子明)免费阅读 -
  • 神豪从深镇收租开始易安国李思思,神豪从深镇收租开始最新章节
  • 李君小说《他是监狱的神》在线阅读

    关于我们 | 我要投稿 | 免责申明

    Copyright © 2020-2022 ZhangShiYu.com Rights Reserved.豫ICP备2022013469号-1