提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档

java 处理 ISO 8601(RFC 3339)时间格式

  • 前言
  • 一、RFC 3339和ISO 8601是什么?
  • 二、使用
    • 反序列化
    • 序列化
    • JSR310
    • 秒级单位
    • Java中的日期\时间类
      • Date
      • Calendar
      • LocalDateTime
      • Timestamp
    • java8 日期\时间工具类

相关文章导读:

java 时区 mysql 时区:时区在程序和数据库中的作用及其机制


前言

提示:这里可以添加本文要记录的大概内容:

例如:随着人工智能的不断发展,机器学习这门技术也越来越重要,很多人都开启了学习机器学习,本文就介绍了机器学习的基础内容。


提示:以下是本篇文章正文内容,下面案例可供参考

一、RFC 3339和ISO 8601是什么?

RFC3339与ISO8601的区别是前者必需是日期和时间的完整表示。

最值得注意的是RFC 3339需要日期和时间的完整表示(只有小数秒是可选的)。RFC也有一些细微的差别。例如,仅允许使用两位数的截断表示法是不允许的 - RFC 3339需要4位数的年份,RFC只允许使用句点字符作为小数秒的小数点。RFC还允许用空格(或其他字符)替换“T”,而标准只允许将其省略(并且只有在使用表示的各方之间达成一致时)。


具体的差别看下面连接的表格。

https://ijmacd.github.io/rfc3339-iso8601/

二、使用

反序列化

import com.fasterxml.jackson.core.JsonParser;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.DeserializationContext;
import com.fasterxml.jackson.databind.JsonDeserializer;import java.io.IOException;
import java.sql.Timestamp;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
import java.time.format.DateTimeFormatterBuilder;public class TimestampDeserialize extends JsonDeserializer<Timestamp> {@Overridepublic Timestamp deserialize(JsonParser p, DeserializationContext ctxt) throws IOException, JsonProcessingException {String dateStr = p.getValueAsString();DateTimeFormatter formatter = new DateTimeFormatterBuilder().parseCaseInsensitive().append(DateTimeFormatter.ISO_LOCAL_DATE).appendLiteral('T').append(DateTimeFormatter.ISO_LOCAL_TIME).appendLiteral("+08:00").toFormatter();LocalDateTime now = LocalDateTime.now();System.out.println(now.format(DateTimeFormatter.BASIC_ISO_DATE));System.out.println(now.format(formatter));LocalDateTime localDateTime = LocalDateTime.parse(dateStr, formatter);Timestamp newTime = Timestamp.valueOf(localDateTime);return newTime;}
}

序列化

    @JsonDeserialize(using = TimestampDeserialize.class)private Timestamp createdAt;

JSR310

Java上新的时间日期处理API命名。

秒级单位

Millisecond 毫秒

microsecond 微秒

nanosecond 纳秒

1 秒=1000 毫秒

1 秒=1000000 微秒

1 秒=1000000000 纳秒

Java中的日期\时间类

Date

非多线程安全,精度最多微秒

Calendar

LocalDateTime

有时区,精度最多纳秒

Timestamp

时间戳,没有时区

java8 日期\时间工具类

ZoneId 地区 Asia/Shanghai、Europe/Paris
ZoneOffset 偏移数据 +8:00
Instant 它代表的是时间戳
Duration 它表示秒或纳秒时间间隔
Period 表示一段时间的年、月、日,开使用between()方法获取两个日期之间的差作为Period 对象返回
LocalDate 不包含具体时间的日期,比如2014-01-14。它可以用来存储生日,周年纪念日,入职日期等。
LocalTime 它代表的是不含日期的时间
LocalDateTime 它包含了日期及时间,不过还是没有偏移信息或者说时区。
ZonedDateTime 这是一个包含时区的完整的日期时间,偏移量是以UTC/格林威治时间为基准的。
OffsetDateTime 类实际上包含了LocalDateTime与ZoneOffset
DateTimeFormatter 日期的格式化与解析,与SimpleDateFormat不同,它是不可变且线程安全的
TemporalAdjusters 类中包含许多常用的静态方法,避免自己编写工具类


java 处理 ISO 8601(RFC 3339)时间格式相关推荐

  1. Java格式化ISO 8601 日期格式

    Java格式化ISO 8601 日期格式 public static void main(String[] args) {SimpleDateFormat s = new SimpleDateForm ...

  2. 【Java】7.5 正则表达式 7.6 Java 8 新增的日期、时间格式器

    目录 Pattern类 Matcher类 Java 8 新增的日期.时间格式器 Pattern类 Pattern类的实例是将一个编译好的正则表达式封装起来.因此正则表达式字符串必须先被变异成Patte ...

  3. iso 8601 php,PHP-使用ISO 8601显示实际时间

    我也这样尝试过:echo date(" d M Y H:i:s",strtotime($time)); 但是时间没有显示为已保存在数据库中.它显示出几个小时的差异. 数据库有:20 ...

  4. Java 利用POI处理Excel的时间格式

    问题: 用Java的POI处理Excel中的时间单元格,往往得到的格式不是我们想要的.比如: 按上图中方式设置好后,通过以下代码 XSSFRow row = sheet.getRow(0);Cell ...

  5. Java ISO 8601时间格式转换

    String pattern = "YYYY-MM-dd'T'HH:mm:ss.SSSZZ"; String timeStr=DateFormatUtils.format(new ...

  6. python 时间戳转iso 8601_python - 如何解析ISO 8601格式的日期?

    python - 如何解析ISO 8601格式的日期? 这个问题在这里已有答案: 使用strftime将python datetime转换为epoch                          ...

  7. date java 格式化 sss_JAVA时间格式为yyyy-MM-ddTHH:mm:ss.SSS+SSSS转为常用时间格式

    简介 本文记录了在JAVA开发工作中遇到了时间格式为: yyyy-MM-ddTHH:mm:ss.SSS+SSSS 转为常用时间格式: yyyy-MM-dd HH:mm:ss 的解决方法,提供给碰到和我 ...

  8. 时区转换,时间格式转换

    基本概念 UT - 世界时 TAI - 国际原子时 GMT - 格林尼治标准时间/格林威治平均时间 UTC - 协调世界时 LT - 本地时间 这篇文章解释的都很详细 一些时间的概念与区分(UTC.G ...

  9. 日期时间格式转化为方便理解的格式

    import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Date;/*** @auth ...

最新文章

  1. 实战:使用Mask-RCNN的停车位检测
  2. 【django轻量级框架】云端系统之Django框架
  3. 与mysql的零距离接触_与MySQL的零距离接触
  4. 我们都是和自己赛跑的人
  5. html用css画多边形,Sass绘制多边形_Preprocessor, Sass, SCSS, clip-path, CSS处理器, 会员专栏 教程_W3cplus...
  6. Mysqli面向对象操作数据库
  7. python迭代器与生成器答案_史上最全 Python 迭代器与生成器
  8. 中国大学慕课python答案第七章_中国大学慕课mooc用Python玩转数据章节答案
  9. 支持蓝牙的模拟器_PM 2032电池模拟器展会现场演示
  10. 理解浏览器和nodeJs中的事件循环(Event Loop)
  11. [python]python 动态调用模块类方法
  12. 在UNITY中按钮的高亮用POINT灯实现,效果别具一番风味
  13. (转)DPDK内存管理 02 -----初始化
  14. 【毕业季】一个普通大二学生的迷茫与展望
  15. ESP32 EC11 制作电脑音量调节旋钮
  16. 推荐系统中的图形注意协同相似度嵌入
  17. 删除:大数据取舍之道 - 电子书下载(高清版PDF格式+EPUB格式)
  18. 要点回顾|10 月 Pulsar 中文开发者与用户组会议
  19. .NET AutoCAD二次开发之路(二、直线篇)
  20. Windows之使用批处理创建快捷方式到桌面(符号链接)

热门文章

  1. 一文了解 if, else if, else 区别和使用
  2. 游戏服务器api 文档,233游戏开放平台-帮助文档
  3. unity gameframework 《starforce》 DialogForm UI学习
  4. uni-app自定义导航
  5. 让loadrunner走下神坛
  6. HTTPS 2020面试必看
  7. iOS中集成ijkplayer视频直播框架
  8. 今天说说阿里云邮件推送配置
  9. PAT 甲级 1061 PAT Ranking 个人错误总结
  10. python中实例是什么意思_python中的单例模式是什么意思