ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

SAP ABAP 时间戳 20210415

2021-04-15 12:05:21  阅读:453  来源: 互联网

标签:SY TIMESTAMP CONVERT 20210415 LV ABAP 时间 TIME SAP


UTC(UTC, Universal Time Coordinated,通用协调时)时间戳,分为长时间戳和短时间戳,其中长时间戳参考的系统数据元素TIMESTAMPL,类型为DEC(21,7),长格式的 UTC 时戳 (YYYYMMDDhhmmss,mmmuuun);而短时间戳参考的系统数据元素为TIMESTAMP,类型为DEC(15,0),简短格式的 UTC 时戳 (YYYYMMDDhhmmss)。

系统预留(系统结构为SYST,程序默认结构为SY)的时间变量:
应用服务器日期:SY-DATUM
应用服务器时间:SY-UZEIT
应用服务器时区(INT4):SY-TZONE;
夏令时标识:SY-DAYST
用户本地日期:SY-DATLO
用户本地时间:SY-TIMLO
用户本地时区(CHAR6):SY-ZONLO

进行时间戳与日期、时间进行转换的系统函数:
根据制定的日期、时间、时区生成时间戳:IB_CONVERT_INTO_TIMESTAMP
根据制定的时间戳和时区转化成日期、时间:IB_CONVERT_FROM_TIMESTAMP
把指定区域的时间戳转化成日期和时间:LTRM_TIMESTAMP_CONVERT_FROM
把指定区域的日期和时间转化成时间戳:LTRM_TIMESTAMP_CONVERT_INTO
把指定的日期和时间转化成时间戳(默认本地时区):ABI_TIMESTAMP_CONVERT_FROM
把指定的时间戳转化成日期和时间(默认本地时区):ABI_TIMESTAMP_CONVERT_INTO
获取指定的远程系统的时间戳:RSWR_TIMESTAMP_GET

更多的:事务码SE37 模糊匹配TIMESTAMP可以查到大量的相关函数;类CL_ABAP_TSTMP也有一些实用方法
在这里插入图片描述
应用举例:

DATA: LV_DATUM         TYPE SY-DATUM,
      LV_UZEIT         TYPE SY-UZEIT,
      LV_TIMESTAMP_LOL TYPE TIMESTAMPL,      "时间戳(长时间戳)
      LV_TIMESTAMP_LOS TYPE TZONREF-TSTAMPS, "时间戳(短时间戳)
      LV_TIMESTAMP     TYPE TZONREF-TSTAMPS, "时间戳(短时间戳)
      LV_ISO8601       TYPE STRING,          "时间戳(ISO)
      LV_TIMESTAMP_ASS TYPE TZONREF-TSTAMPS, "时间戳(短时间戳)
      LV_DATE          TYPE SY-DATUM,
      LV_TIME          TYPE SY-UZEIT,
      LV_DAYST         TYPE SY-DAYST.

LV_DATUM = SY-DATUM.
LV_UZEIT = SY-UZEIT.

"1、获取当前时间戳
"获取当前时间戳(长时间戳)
GET TIME STAMP FIELD LV_TIMESTAMP_LOL.
"获取当前时间戳(短时间戳)
GET TIME STAMP FIELD LV_TIMESTAMP_LOS.

"2、使用CONVERT DATE生成指定时间(当前服务器时间)的时间戳  SY-DATLO  SY-TIMLO
*CONVERT DATE dat
*        [TIME tim [DAYLIGHT SAVING TIME dst]]
*        INTO TIME STAMP time_stamp TIME ZONE tz.
*dat 指定的日期(DATS类型)  tim 指定的时间(TIMS类型) dst 夏令时标志(CHAR1类型,SPACE或X)
*time_stamp (时间戳 DEC(15,0)类型) tz 时区(CHAR06类型)
CONVERT DATE LV_DATUM TIME LV_UZEIT
INTO TIME STAMP LV_TIMESTAMP_ASS TIME ZONE SY-ZONLO.

"3、使用CONVERT TIME STAMP获取(当前服务器时间)时间戳对应的日期和时间、夏令时信息
*CONVERT TIME STAMP time_stamp TIME ZONE tz
*        INTO [DATE dat]
*             [TIME tim] [DAYLIGHT SAVING TIME dst].
*dat 指定的日期(DATS类型)  tim 指定的时间(TIMS类型) dst 夏令时标志(CHAR1类型,SPACE或X)
*time_stamp (时间戳 DEC(15,0)类型) tz 时区(CHAR06类型)
CONVERT TIME STAMP LV_TIMESTAMP_ASS TIME ZONE SY-ZONLO
INTO DATE LV_DATE TIME LV_TIME DAYLIGHT SAVING TIME LV_DAYST.

"4、ISO时间戳
CALL FUNCTION 'IB_CONVERT_INTO_TIMESTAMP'
  EXPORTING
    I_DATLO     = '20210325'
    I_TIMLO     = '090506'
    I_TZONE     = SY-ZONLO
  IMPORTING
    E_TIMESTAMP = LV_TIMESTAMP.

CALL METHOD CL_XLF_DATE_TIME=>CREATE
  EXPORTING
    TIMESTAMP = LV_TIMESTAMP
  RECEIVING
    ISO8601   = LV_ISO8601.

WRITE: / '当前服务器时间',LV_DATUM,LV_UZEIT.
WRITE: / '当前用户的时区',SY-ZONLO,'当前服务器时区',SY-TZONE.

WRITE: / '1、获取当前时间戳'.
WRITE: / '当前时间戳(短)',LV_TIMESTAMP_LOS,
       / '当前时间戳(长)',LV_TIMESTAMP_LOL.

WRITE: / '2、使用CONVERT DATE生成指定时间(当前服务器时间)的时间戳'.
WRITE: / '指定时间的时间戳(短)',LV_TIMESTAMP_ASS.

WRITE: / '3、使用CONVERT TIME STAMP获取(当前服务器时间)时间戳对应的日期和时间、夏令时信息'.
WRITE: / '指定时间戳(短)的时间信息',LV_DATE,LV_TIME,LV_DAYST.

WRITE: / '4、指定时间2021.03.25 09:05:06 时区UTC+8(SY-ZONLO)对应的ISO时间戳'.
WRITE: / '当前时间戳(短) ',LV_TIMESTAMP,
       / '当前时间戳(ISO)',LV_ISO8601.

运行结果:
在这里插入图片描述

标签:SY,TIMESTAMP,CONVERT,20210415,LV,ABAP,时间,TIME,SAP
来源: https://blog.csdn.net/qq_38223529/article/details/115717272

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有