ABAP 时间戳与 Unix 时间戳互转

作者:ABAP三叔 约 4 分钟阅读 更新日期:2025-03-02 1 年前更新 标签:ABAP, Cloud Architecture, Data Engineering, 云架构, 开发, 数据工程
ABAP 时间戳与 Unix 时间戳互转 - 封面图
ABAP 时间戳与 Unix 时间戳互转 - 封面图

前言

## 关于Unix时间戳(Unix timestamp)

时间戳是指格林威治时间1970年01月01日00时00分00秒(北京时间1970年01月01日08时00分00秒)起至现在的总秒数。

长时间戳,则是 指格林威治时间1970年01月01日00时00分00秒(北京时间1970年01月01日08时00分00秒)起至现在的总毫秒数。

ABAP中转换

在ABAP中可以使用

cl_pco_utility=>convert_abap_timestamp_to_java方法可以将ABAP中的日期和时间转换成到毫秒的长时间戳。

ABAP 时间戳与 Unix 时间戳互转 - 封面图
ABAP 时间戳与 Unix 时间戳互转 - 封面图

但是注意,需要先将北京时间(UTC+8)转换为 格林威治时间(UTC)时间,中间相差8个小时的时差。 cl_pco_utility=>

convert_java_timestamp_to_abap 方法可以将长 时间戳转 ABAP中的日期和时间 。

ABAP 时间戳与 Unix 时间戳互转 - 封面图
ABAP 时间戳与 Unix 时间戳互转 - 封面图

同样注意, 8个小时的时差。 ABAP示例代码如下:

DATA: lv_date TYPE d, lv_time TYPE t.DATA: lv_timestampl TYPE string, lv_timestamps TYPE string. lv_date = sy-datum.lv_time = sy-uzeit.CONVERT DATE lv_date TIME lv_time INTO TIME STAMP DATA(ts) TIME ZONE sy-zonlo.*GET TIME STAMP FIELD DATA(ts).

CONVERT TIME STAMP ts TIME ZONE 'UTC' INTO DATE DATA(date) TIME DATA(time).

*ABAP时间转Unix时间戳cl_pco_utility=>convert_abap_timestamp_to_java( EXPORTING iv_date = date iv_time = time IMPORTING ev_timestamp = lv_timestampl ).DATA(lv_len) = strlen( lv_timestampl ) - 3 .*短时间戳lv_timestamps = lv_timestampl(lv_len).cl_demo_output=>display( |Date:{ lv_date } Time:{ lv_time } -> TimestampLong:{ lv_timestampl } TimestampShort:{ lv_timestamps }| ). *Unix时间戳转ABAP时间cl_pco_utility=>convert_java_timestamp_to_abap( EXPORTING iv_timestamp = lv_timestampl IMPORTING ev_date = date ev_time = time ).CONVERT TIME STAMP CONV timestamp( date && time ) TIME ZONE 'UTC+8' INTO DATE date TIME time.cl_demo_output=>display( |TimestampLong:{ lv_timestampl } -> Date:{ lv_date } Time:{ lv_time } | ).

结果如下

ABAP 时间戳与 Unix 时间戳互转 - 封面图
ABAP 时间戳与 Unix 时间戳互转 - 封面图
ABAP 时间戳与 Unix 时间戳互转 - 封面图
ABAP 时间戳与 Unix 时间戳互转 - 封面图

总结

在做接口项目中,Unix时间戳用途比较广泛, cl_pco_utility标准类提供了方法,使用起来比较简单,无需自己再造轮子去计算。

ABAP三叔

关于作者:ABAP三叔

企业信息化与 SAP 技术顾问,长期专注 SAP ABAP、FI/CO、MM、SD 等模块的技术分享与实战经验总结。查看更多介绍

来源说明:本文内容由「ABAP时间戳与Unix时间戳互转.md」整理生成,仅用于内部技术分享与学习交流。