ruby RPG语言中的常见日期转换(此代码采用RPG语言,但Ruby扩展用于添加语法突出显示)

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ruby RPG语言中的常见日期转换(此代码采用RPG语言,但Ruby扩展用于添加语法突出显示)相关的知识,希望对你有一定的参考价值。

H option(*nodebugio)  

D @charA          S              8    inz('04/12/01')
D @charB          S             10    inz('12/02/2004')  
D @charC          S              8    inz('12/03/04')   
D @dateA          S               d   inz(d'2004-12-04')   
D @numA           S              6  0 inz(041205)  
D @numB           S              7  0 inz(1041206)  
D @numC           S              8  0 inz(20041207)  
D @numD           S              6  0 inz(120804)  
D @numE           S              8  0 inz(12092004)   

d @charDate       S             10

/free   

  // CHARACTER TO CHARACTER
  
  @charB = %char(%date(@charA:*ymd/):*usa/); // 'yy/mm/dd' to 'mm/dd/ccyy'  
  @charC = %char(%date(@charA:*ymd/):*mdy/); // 'yy/mm/dd' to 'mm/dd/yy'  
  @charA = %char(%date(@charB:*usa/):*ymd/); // 'mm/dd/ccyy' to 'yy/mm/dd'  
  @charC = %char(%date(@charB:*usa/):*mdy/); // 'mm/dd/ccyy' to 'mm/dd/yy'  
  @charA = %char(%date(@charC:*mdy/):*ymd/); // 'mm/dd/yy' to 'yy/mm/dd'  
  @charB = %char(%date(@charC:*mdy/):*usa/); // 'mm/dd/yy' to 'mm/dd/ccyy'   

  
  // CHARACTER TO DATE
  
  @dateA = %date(@charA:*ymd/); // 'yy/mm/dd' to D'ccyy-mm-dd'  
  @dateA = %date(@charB:*usa/); // 'mm/dd/ccyy' to D'ccyy-mm-dd'  
  @dateA = %date(@charC:*mdy/); // 'mm/dd/yy' to D'ccyy-mm-dd'   

  
  // CHARACTER TO NUMERIC 

  @numA = %dec(%char(%date(@charA:*ymd/):*ymd0):6:0);   // 'yy/mm/dd' to yymmdd  
  @numB = %dec(%char(%date(@charA:*ymd/):*cymd0):7:0);  // 'yy/mm/dd' to cyymmdd  
  @numC = %dec(%char(%date(@charA:*ymd/):*iso0):7:0);   // 'yy/mm/dd' to ccyymmdd  
  @numD = %dec(%char(%date(@charA:*ymd/):*mdy0):7:0);   // 'yy/mm/dd' to mmddyy  
  @numE = %dec(%char(%date(@charA:*ymd/):*usa0):7:0);   // 'yy/mm/dd' to mmddyyyy  
  @numA = %dec(%char(%date(@charB:*usa/):*ymd0):6:0);   // 'mm/dd/ccyy' to yymmdd  
  @numB = %dec(%char(%date(@charB:*usa/):*cymd0):7:0);  // 'mm/dd/ccyy' to cyymmdd  
  @numC = %dec(%char(%date(@charB:*usa/):*iso0):7:0);   // 'mm/dd/ccyy' to ccyymmdd  
  @numD = %dec(%char(%date(@charB:*usa/):*mdy0):7:0);   // 'mm/dd/ccyy' to mmddyy  
  @numE = %dec(%char(%date(@charB:*usa/):*usa0):7:0);   // 'mm/dd/ccyy' to mmddyyyy 
  @numA = %dec(%char(%date(@charC:*mdy/):*ymd0):6:0);   // 'mm/dd/yy' to yymmdd  
  @numB = %dec(%char(%date(@charC:*mdy/):*cymd0):7:0);  // 'mm/dd/yy' to cyymmdd  
  @numC = %dec(%char(%date(@charC:*mdy/):*iso0):7:0);   // 'mm/dd/yy' to ccyymmdd  
  @numD = %dec(%char(%date(@charC:*mdy/):*mdy0):7:0);   // 'mm/dd/yy' to mmddyy  
  @numE = %dec(%char(%date(@charC:*mdy/):*usa0):7:0);   // 'mm/dd/yy' to mmddyyyy   


  // DATE TO CHARACTER
  
  @charA = %char(@dateA:*ymd/);   // D'ccyy-mm-dd' to 'yy/mm/dd'  
  @charB = %char(@dateA:*usa/);   // D'ccyy-mm-dd' to 'mm/dd/ccyy'  
  @charC = %char(@dateA:*mdy/);   // D'ccyy-mm-dd' to 'mm/dd/yy' 
  
  @charDate = %char(@dateA);      // d'ccyy-mm-dd' to 'yyyy-mm-dd'
  
  
  // DATE TO NUMERIC

  @numA = %dec(%char(@dateA:*ymd/):6:0);    // D'ccyy-mm-dd' to yymmdd  
  @numB = %dec(%char(@dateA:*cymd/):7:0);   // D'ccyy-mm-dd' to cyymmdd  
  @numC = %dec(%char(@dateA:*iso-):8:0);    // D'ccyy-mm-dd' to ccyymmdd  
  @numD = %dec(%char(@dateA:*mdy/):6:0);    // D'ccyy-mm-dd' to mmddyy  
  @numE = %dec(%char(@dateA:*usa/):8:0);    // D'ccyy-mm-dd' to mmddccyy   


  // NUMERIC TO CHARACTER

  @charA = %char(%date(@numA:*ymd):*ymd/);    // yymmdd to 'yy/mm/dd'  
  @charB = %char(%date(@numA:*ymd):*usa/);    // yymmdd to 'mm/dd/ccyy'    
  @charC = %char(%date(@numA:*ymd):*mdy/);    // yymmdd to 'mm/dd/yy'  
  @charA = %char(%date(@numB:*cymd):*ymd/);   // cyymmdd to 'yy/mm/dd'  
  @charB = %char(%date(@numB:*cymd):*usa/);   // cyymmdd to 'mm/dd/ccyy'  
  @charC = %char(%date(@numB:*cymd):*mdy/);   // cyymmdd to 'mm/dd/yy'  
  @charA = %char(%date(@numC:*iso):*ymd/);    // D'ccyy-mm-dd' to 'yy/mm/dd'  
  @charB = %char(%date(@numC:*iso):*usa/);    // D'ccyy-mm-dd' to 'mm/dd/ccyy'  
  @charC = %char(%date(@numC:*iso):*mdy/);    // D'ccyy-mm-dd' to 'mm/dd/yy'  
  @charA = %char(%date(@numD:*mdy):*ymd/);    // mmddyy to 'yy/mm/dd'  
  @charB = %char(%date(@numD:*mdy):*usa/);    // mmddyy to 'mm/dd/ccyy'  
  @charC = %char(%date(@numD:*mdy):*mdy/);    // mmddyy to 'mm/dd/yy'  
  @charA = %char(%date(@numE:*usa):*ymd/);    // mmddccyy to 'yy/mm/dd'  
  @charB = %char(%date(@numE:*usa):*usa/);    // mmddccyy to 'mm/dd/ccyy'  
  @charC = %char(%date(@numE:*usa):*mdy/);    // mmddccyy to 'mm/dd/yy'   


  // NUMERIC TO DATE  

  @dateA = %date(@numA:*ymd);     // yymmdd to D'ccyy-mm-dd'  
  @dateA = %date(@numB:*cymd);    // cyymmdd to D'ccyy-mm-dd'  
  @dateA = %date(@numC:*iso);     // ccyymmdd to D'ccyy-mm-dd'   
  @dateA = %date(@numD:*mdy);     // mmddyy to D'ccyy-mm-dd'  
  @dateA = %date(@numE:*usa);     // mmddccyy to D'ccyy-mm-dd'   


  // NUMERIC TO NUMERIC  
  
  @numB = %dec(%char(%date(@numA:*ymd):*cymd0):7:0);    // yymmdd to cyymmdd  
  @numC = %dec(%char(%date(@numA:*ymd):*iso0):8:0);     // yymmdd to ccyymmdd   
  @numD = %dec(%char(%date(@numA:*ymd):*mdy0):6:0);     // yymmdd to mmddyy  
  @numE = %dec(%char(%date(@numA:*ymd):*usa0):8:0);     // yymmdd to mmddccyy  
  @numA = %dec(%char(%date(@numB:*cymd):*ymd0):6:0);    // cyymmdd to yymmdd  
  @numC = %dec(%char(%date(@numB:*cymd):*iso0):8:0);    // cyymmdd to ccyymmdd  
  @numD = %dec(%char(%date(@numB:*cymd):*mdy0):6:0);    // cyymmdd to mmddyy  
  @numE = %dec(%char(%date(@numB:*cymd):*usa0):8:0);    // cyymmdd to mmddccyy  
  @numA = %dec(%char(%date(@numC:*iso):*ymd0):6:0);     // ccyymmdd to yymmdd  
  @numB = %dec(%char(%date(@numC:*iso):*cymd0):7:0);    // ccyymmdd to cyymmdd  
  @numD = %dec(%char(%date(@numC:*iso):*mdy0):6:0);     // ccyymmdd to mmddyy  
  @numE = %dec(%char(%date(@numC:*iso):*usa0):8:0);     // ccyymmdd to mmddccyy  
  @numA = %dec(%char(%date(@numD:*mdy):*ymd0):6:0);     // mmddyy to yymmdd  
  @numB = %dec(%char(%date(@numD:*mdy):*cymd0):7:0);    // mmddyy to cyymmdd  
  @numC = %dec(%char(%date(@numD:*mdy):*iso0):8:0);     // mmddyy to ccyymmdd  
  @numE = %dec(%char(%date(@numD:*mdy):*usa0):8:0);     // mmddyy to mmddccyy  
  @numA = %dec(%char(%date(@numE:*usa):*ymd0):6:0);     // mmddccyy to yymmdd  
  @numB = %dec(%char(%date(@numE:*usa):*cymd0):7:0);    // mmddccyy to cyymmdd  
  @numC = %dec(%char(%date(@numE:*usa):*iso0):8:0);     // mmddccyy to ccyymmdd  
  @numD = %dec(%char(%date(@numE:*usa):*mdy0):6:0);     // mmddccyy to mmddyy   

  
  *inlr = *on;  

/end-free 

以上是关于ruby RPG语言中的常见日期转换(此代码采用RPG语言,但Ruby扩展用于添加语法突出显示)的主要内容,如果未能解决你的问题,请参考以下文章

如何将此时间整数转换为 Ruby 中的日期? [复制]

Ruby/Rails:将日期时间转换为自然语言(例如 2012 年 3 月 23 日到“本周五”)

如何在R中的数据框中转换日期/时间列

熟悉编程语言

将标准 rails / ruby​​ 时间转换为美国格式 - 日期混淆

在 Ruby 中转换为日期时间和时间