java后端传时间戳给前端的三种方式

一. 后端传时间戳给前端的几种方式

使用System.currentTimeMillis()

这是最简单的方式,返回自1970年1月1日(UTC)以来的毫秒数,可以直接传递给前端。

long timestamp1 = System.currentTimeMillis();
使用java.time.Instant

Java 8引入了java.time包,可以使用Instant获取精确到毫秒的时间戳。

Instant now2 = Instant.now();
long timestamp2 = now2.toEpochMilli();
使用LocalDateTime或ZonedDateTime

如果你需要更复杂的时间处理(如带时区的时间),可以使用ZonedDateTime或LocalDateTime。

ZonedDateTime now3 = ZonedDateTime.now();
long timestamp3 = now3.toInstant().toEpochMilli();

二. 前后端时间传递的常见方式和处理方法

1. 使用时间戳(Timestamp)进行传递
前端—>后端:

通过JSON对象或HTTP请求的参数将时间戳传递给后端。

const timestamp = Date.now(); // 获取当前时间戳(毫秒)
//或者
const timestamp = Math.floor(Date.now() / 1000); // 获取当前时间戳(秒)
后端接收时间戳并转换:
long timestamp = 1695521234567L; // 前端传递的毫秒级时间戳
Instant instant = Instant.ofEpochMilli(timestamp); // 转换为Instant
LocalDateTime dateTime = LocalDateTime.ofInstant(instant, ZoneId.systemDefault()); // 转换为本地时间
2. 使用ISO 8601格式进行传递

ISO 8601是一种国际标准的日期和时间格式,通常用于传递带有时区信息的时间。格式类似于:2024-09-24T14:48:00Z2024-09-24T14:48:00+00:00

前端—>后端:

通过JSON对象或HTTP请求,将ISO格式的时间传递给后端。

const isoTime = new Date().toISOString(); // 转换为ISO 8601格式
后端接收ISO 8601并解析:
String isoTime = "2024-09-24T14:48:00Z"; // 前端传递的ISO时间字符串
Instant instant = Instant.parse(isoTime); // 解析ISO时间字符串为Instant
ZonedDateTime zonedDateTime = instant.atZone(ZoneId.systemDefault()); // 转换为带时区的时间
3. 使用格式化的日期字符串

有时,前后端需要传递自定义的日期格式(例如YYYY-MM-DD HH:mm:ss)。这种格式常用于数据库交互或简化显示。

前端—>后端:

通过HTTP请求的参数或JSON对象,将格式化的时间字符串传递给后端。

const formattedDate = new Date().toLocaleString('en-GB', { timeZone: 'UTC' }); // 例如:2024-09-24 14:48:00
后端接收并解析格式化的时间字符串:
String formattedDate = "2024-09-24 14:48:00"; // 前端传递的时间字符串
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
LocalDateTime dateTime = LocalDateTime.parse(formattedDate, formatter);
注意事项
  1. 时区问题:
    1. 如果后端和前端处于不同的时区,时区管理是非常重要的。使用ISO 8601格式可以显式包含时区信息,减少误差。
    2. Java 8中的ZonedDateTime和Instant处理带有时区的时间更为方便,而前端可以使用Date.toISOString()或moment.js来处理时区。
  2. 时间精度问题:
    1. 前端一般以毫秒为单位(Date.now()),而某些后端系统可能会以秒为单位传递,需要注意单位转换。
    2. 如果使用时间戳,确保前后端对时间戳的单位达成一致(毫秒或秒)。
  3. JSON序列化问题:
    1. 有时后端通过JSON格式返回时间信息,应该确保时间的序列化格式符合预期。可以使用Jackson等库来配置日期的序列化/反序列化格式。
总结

在前后端时间传递时,常用的方式包括:

  • 时间戳(Timestamp):简单、便于时间计算,传递毫秒或秒。
  • ISO 8601格式:标准化时间格式,适合带时区的信息传递。
  • 自定义格式化日期字符串:适用于显示和数据库交互。

来O站,玩转AGI!(点我!)

转载自开思通智网:https://w3.opensnn.com/os/article/10001462

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/64919.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Cobalt Strike 4.8 用户指南-第十四节 Aggressor 脚本

14.1、什么是Aggressor脚本 Aggressor Script 是Cobalt Strike 3.0版及更高版本中内置的脚本语言。Aggressor 脚本允许你修改和扩展 Cobalt Strike 客户端。 历史 Aggressor Script 是 Armitage 中开源脚本引擎Cortana的精神继承者。Cortana 是通过与 DARPA 的网络快速跟踪计…

Vue(四)

1.Vuex 1.1 Vuex是什么 Vuex 是一个插件,可以帮我们管理 Vue 通用的数据。例如:购物车数据、个人信息数据。 1.2 vuex的使用 1.安装 vuex 安装 vuex 与 vue-router 类似,vuex 是一个独立存在的插件,如果脚手架初始化没有选 v…

基础9 CRTP 与 Expression Templates

目录 一、奇异递归模版(CRTP) 二、表达式模板 🍉 概要 🍇 奇异递归模板模式(CRTP) 动机与原理 🍓 表达式模板(Expression Templates) 动机与原理 🍈 示例代码 &#x1f35…

如何在K8S集群中查看和操作Pod内的文件?

文章目录 一、理解Kubernetes中的Pod二、查看Pod内的文件三、操作Pod内的文件四、高级技巧五、常见问题与解决方案 在Kubernetes(K8s)集群中,Pod是最小的可部署单元; 一、理解Kubernetes中的Pod 在Kubernetes中,Pod是…

Zed调试宏 C语言错误日志 异常错误调试信息

1、C中的错误码 在C语言中通过返回错误码或设置全局的errno值来反馈错误问题。errno.h是一个头文件,它定义了一个全局变量errno,用于在程序中记录和报告错误的原因。这个机制主要用于处理系统调用或标准库函数出错时的错误反馈。当系统调用或库函数…

spring mvc | servlet :serviceImpl无法自动装配 UserMapper

纯注解SSM整合 解决办法: 在MybatisConfig添加 Configuration MapperScan("mapper")

分布式协同 - 分布式事务_TCC解决方案

文章目录 导图Pre流程图2PC VS 3PC VS TCC2PC(Two-Phase Commit,二阶段提交)3PC(Three-Phase Commit,三阶段提交)TCC(Try-Confirm-Cancel)2PC、3PC与TCC的区别2PC、3PC与TCC的联系 导…

源码分析之Openlayers中MousePosition鼠标位置控件

概述 本文主要介绍 Openlayers 中的MousePosition鼠标位置控件,该控件会创建一个元素在页面的右上方用来实时显示鼠标光标的位置坐标。该控件在实际应用很有效,可以实时获取鼠标位置,但是一般控件元素都会自定义。 源码分析 MousePosition…

脑肿瘤检测数据集,对9900张原始图片进行YOLO,COCO,VOC格式的标注

脑肿瘤检测数据集,对9900张原始图片进行YOLO,COCO,VOC格式的标注 数据集分割 训练组 70% 6930图片 有效集 20% 1980图片 测试集 10% 990图片 预处理 静态裁剪: 24-82&…

SQL进阶技巧:如何计算商品需求与到货队列表进出计划?

目录 0 需求描述 1 数据准备 2 问题分析 3 小结 累计到货数量计算 出货数量计算

步进电机接线和stm32引脚分配

实验设备 24v(12-48 v)直流电源 stm32f103最小系统板 步进电机驱动器 采用混合式二相步进电机J-5718HBS2401-野火42步进电机,驱动器为野火EBF-MSD4805 本人参考接线方式如下: 如上图所示通常采用共阴接线方式,具体…

极乐 15.2.6 | 清爽版简约美观音乐软件,支持网易云歌单导入

极乐是一款使用起来非常轻松的音乐播放软件,它拥有清新简洁的画面,专注于音乐播放功能。最新版本全面升级了64位架构,带来了前所未有的性能提升和更稳定的体验。通过优化内存管理,降低了应用对系统资源的占用,确保设备…

Ubuntu Netlink 套接字使用介绍

Netlink 套接字 是 Linux 特有的一种 IPC(进程间通信)机制,用于用户态进程和内核模块之间的通信。它可以用来完成路由管理、设备通知、网络状态更新等任务。 1. Netlink 的基本工作原理 Netlink 是一种双向通信机制。Netlink 消息分为请求和…

4、mysql高阶语句

mysql高阶语句是对复杂的条件进行查询的操作。 排序—order by 加了desc表示由大到小 1、查询name和score,地址都是云南西路的按id进行由小到大排序 2、查询name和score,先按hobbid进行排序,再把结果按id进行排序 第一段字段必须要有相同的…

Docker部署GitLab服务器

一、GitLab介绍 1.1 GitLab简介 GitLab 是一款基于 Git 的开源代码托管平台,集成了版本控制、代码审查、问题跟踪、持续集成与持续交付(CI/CD)等多种功能,旨在为团队提供一站式的项目管理解决方案。借助 GitLab,开发…

hadoop中hive本地模式安装mysql源不成功

目录 1.更改DNS配置 2.替换yun源 3.替换掉后,在执行 4.重新安装mysql源 hive本地模式安装mysql源出错 yum install mysql mysql-server mysql-devel -y 解决: 1.更改DNS配置 vi /etc/resolv.conf 添加下面内容: nameserver 8.8.8.8 …

深入解析 Apache APISIX

以下是“第一部分:背景与概述”的示例写作内容,供你参考和使用。你可根据实际需求和篇幅进行增删或细化。 一、背景与概述 1. 高性能动态网关的意义 1.1 微服务架构下的网关角色与价值 随着微服务架构在企业级应用中日益普及,系统被拆分为…

RISC-V架构的压缩指令集介绍

1、压缩指令集介绍 RISC-V的压缩指令集(C扩展)‌是一种设计用于减少代码大小和提高性能的技术。标准的RISC-V指令是32位,压缩指令集可以将部分32位的指令用16位的指令替代,从未减小程序占用存储空间的大小,提高指令密…

Day13 苍穹外卖项目 工作台功能实现、Apache POI、导出数据到Excel表格

目录 1.工作台 1.1 需求分析和设计 1.1.1 产品原型 1.1.2 接口设计 1.2 代码导入 1.2.1 Controller层 1.2.2 Service层接口 1.2.3 Service层实现类 1.2.4 Mapper层 1.3 功能测试 1.4 代码提交 2.Apache POI 2.1 介绍 2.2 入门案例 2.2.1 将数据写入Excel文件 2.2.2 读取Excel文…

齐次矩阵包含平移和旋转

第一个矩阵旋转矩阵 A [ R 1 0 0 1 ] A\left[\begin{matrix}R_{1} & 0\\0 & 1\end{matrix}\right] A[R1​0​01​] 第一个平移矩阵 B [ 1 T 1 0 1 ] B\left[\begin{matrix}1 & T_{1}\\0 & 1\end{matrix}\right] B[10​T1​1​] C [ R 2 0 0 1 ] C\left[\be…