json 接收响应时修改时间戳值

zazmityj  于 2023-04-13  发布在  其他
关注(0)|答案(1)|浏览(109)

我通过API在Timestamp(java.sql)对象中接收一个Timestamp,经过一些其他验证后,我将以包含相同时间戳值的JSON形式发送响应,但每次发送和接收的格式都不相同。
例如,如果我的JSON输入有这个值:

案例一:

"interval_time": "2022-01-26T12:00:00.511+05:30"

回复

{
    "message": "Already contains result for timestamp : 2022-01-26 12:00:00.511",
    "httpcode": 409,
    "documentationLink": "",
    "status": "ERROR"
}

请注意,缺少T和偏移值05:30。

案例二:

"interval_end_time": "2022-01-26T12:00:00.511Z"

回复

{
    "message": "Already contains result for timestamp : 2022-01-26 17:30:00.511",
    "httpcode": 409,
    "documentationLink": "",
    "status": "ERROR"
}

请注意,缺少的T和偏移值被添加到时间戳中。
我需要一个一致的响应,它应该是什么是作为一个输入发送。在时区或偏移量没有变化。
对于用例1,响应应该是这样的:

回复

{
    "message": "Already contains result for timestamp : 2022-01-26T12:00:00.511+05:30",
    "httpcode": 409,
    "documentationLink": "",
    "status": "ERROR"
}

对于情况2,应该是这样的:

回复

{
    "message": "Already contains result for timestamp : 2022-01-26T12:00:00.511Z",
    "httpcode": 409,
    "documentationLink": "",
    "status": "ERROR"
}

注:团队遵循ISO 8601标准。

piv4azn7

piv4azn71#

我通过Timestamp(java.sql)对象中的API接收Timestamp
不你不是
您正在接收JSON文本,其中包含以标准ISO 8601表示时刻的字符串。
将字符串解析为java.time.OffsetDateTime类。

OffsetDateTime odt = OffsetDateTime.parse( "2022-01-26T12:00:00.511+05:30" ) ;

避免使用遗留的有严重缺陷的日期-时间类,如java.sql.Timestamp,只使用它们的替代品,java.time 类。
要生成ISO 8601格式的文本,只需调用OffsetDateTime#toString

String output = odt.toString() ;

我使用Gson将其解析为具有Timestamp数据成员的Java类。
别说了
只使用 java.time 类。

相关问题