当前位置: 首页 > 知识库问答 >
问题:

java - 关于时间转换的问题?

敖和韵
2023-08-01

场景: 如下图, 红框中的数据是后台传过来的时间, 因为是一串字符串, 在 ts 中我就没办法对这个时间做处理 (例如转成数字、获取年月日等)

image.png

对应的 ts 代码

un_queryAll() {  this.iconService.queryAll().subscribe((res: { icons?: Icon[] }) => {    this.dataSource.sort = this.sort;    console.log(Date.now());    if (res.icons) {      this.dataSource.data = res.icons;      console.log(res.icons[0].createTime)    }    console.log(res.icons)  });}

问题简述1: 我在model中定义的 createTimeupdateTime, 都是 number 类型, 并且我在接收 res 时候已经指定接收对象是一个 Icon 类型的数组了, 但为什么我最终 res.icons[0].createTime 结果是一串字符串?

export interface Icon {    id: number;    name: string;    enabled: boolean;    createBy: string;    updateBy: string;    createTime: number;    updateTime: number;}

后台的实体类中, 用的是 Timestamp 类来存储时间

@Column@CreationTimestampprivate Timestamp createTime;

mysql 中, 该属性是 DATETIME 类型

`create_time` DATETIME(6) DEFAULT NULL

问题简述2: 如何实现当后台先将时间转成数字(时间戳)再传给前台, hibernate有没有什么注解可以支持这个功能的?

共有1个答案

皇甫波峻
2023-08-01
  1. typescript 中的 interface 仅仅只是类型定义,跟 Java 中的 POJO 类是不一样的,因为 typescript 需要兼容 javascript 导致其反射能力非常薄弱,并不能自动将json中的 string 类型映射为 number 类型(当然可以使用第三方插件实现类似效果,比如class-transformer等)。虽然你的 createTime 定义为 number 类型,但是实际返回数据json中的 createTimestring 类型,最终的结果也只会是 string 类型。interface 的定义应该按照实际数据类型定义,否则只会欺骗编译器的静态检查。
  2. 如果后端使用的是 Jackson,那么可以使用 @JsonFormat 注解来快速格式化时间,示例如下:

    public class DemoObject { @JsonFormat(shape = JsonFormat.Shape.NUMBER) private Date date;}

    也可以使用Spring自带的 @DateTimeFormat 注解,示例如下:

    public class DemoObject { @DateTimeFormat(iso = DateTimeFormat.ISO.DATE_TIME) private Date date;}
 类似资料:
  • 但现在它打印出“SAT 5月18日19:00:00 CDT 2013”(因为我的本地机器在CDT上),但我希望结果是“SAT 5月18日24:00:00 CDT 2013”。如何将日期字符串“1368921600000”解释为EST日期?谢谢-戴夫

  • 我在我的webapp中有一些本地化功能(通过Ajax公开),使用户能够在他们自己的时区以及与数据主要相关的实体位置相关的时区中显示一些日期时间信息。 > 输入值25/11/2018 16:00 NZDT(太平洋/奥克兰)=UTC+13 产值应为25/11/2018 14:00 ADT(澳大利亚/悉尼)=UTC+11 如果我从数据库中提取源值,然后进行转换,那么计算工作正常,没有问题 如果我使用表单

  • 我正在将我的应用程序从C2DM转换为GCM,我有一些问题。 我修改了这里的gcmquickstart示例: 在我的类,扩展应用程序,我有: 好的,这将启动服务,并且它将永远运行,或者如果操作系统关闭它,那么操作系统将重新启动它。对吗? CheckPlayServices()确保这是Android 2.3或更高版本,并且安装了Google Play Services,因为这些是使用GCM的唯一要求。

  • 本文向大家介绍java针对于时间转换的DateUtils工具类,包括了java针对于时间转换的DateUtils工具类的使用技巧和注意事项,需要的朋友参考一下 本文实例为大家分享了时间转换的DateUtils工具类,供大家参考,具体内容如下 以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持呐喊教程。

  • 前言 时间戳是很多应用系统,特别是加密货币开发设计中非常重要的元素。各种语言都提供了相应的时间处理函数,以前直接拿来就用了,也没有发现什么问题。但是在时间处理上,开发语言核心模块提供的个别Api并没有完全延续人类习惯。在Javascript语言里,有一个Date类的函数就非常奇葩,网络上很多文档的举例都是错误的,因此需要简单总结一下。 这似乎不是什么大问题,但是从stackoverflow.com

  • 询问代码的问题必须表明对正在解决的问题的理解程度最低。。包括尝试的解决方案、它们不起作用的原因以及预期的结果。另请参见:堆栈溢出问题检查表 似乎有很多信息将一个时间段转换为一个时间,但不是相反。 我需要做的一个例子是把120分钟转换成P0DT2H0M0S。和13:10进入P0DT13H10M0S。以及进入PT2H0M0S的120分钟。 有什么快速简单的方法吗?