ibmi-brunch-learn

Announcement

Collapse
No announcement yet.

Fun with dates, part II

Collapse
X
 
  • Filter
  • Time
  • Show
Clear All
new posts

  • Fun with dates, part II

    bif date conversion list ( I splitted the definitions and free form part )

    Definitions
    PHP Code:
    *=====================================================================
         
    d monday          c                   d'1900-01-01'
    *=====================================================================
         
    d d_o_w           s              1s 0 inz
         d d_o_y           s              3s 0 inz
         d qtr_nbr         s              1s 0 inz
         d wk_nbr          s              3s 0 inz
    *=====================================================================
         
    d jan_4_dat       s               d   inz
         d jan_4_dow       s              1s 0 inz
    *====================================================================
         
    d d_dat           s               d   inz
         d wk1_dat         s               d   inz
    *====================================================================
         
    d n_iso           s              8s 0 inz
         d n_usa           s              8s 0 inz
         d n_eur           s              8s 0 inz
         d n_jis           s              8s 0 inz
         d n_longjul       s              7s 0 inz
          
    *
         
    d n_ymd           s              6s 0 inz
         d n_mdy           s              6s 0 inz
         d n_dmy           s              6s 0 inz
         d n_jul           s              5s 0 inz
          
    *
         
    d n_cymd          s              7s 0 inz
         d n_cmdy          s              7s 0 inz
         d n_cdmy          s              7s 0 inz
    *=====================================================================
         
    d a_iso           s             10a   inz
         d a_usa           s             10a   inz
         d a_eur           s             10a   inz
         d a_jis           s             10a   inz
         d a_longjul       s              8a   inz
          
    *
         
    d a_ymd           s              8a   inz
         d a_mdy           s              8a   inz
         d a_dmy           s              8a   inz
         d a_jul           s              6a   inz
          
    *
         
    d a_cymd          s              9a   inz
         d a_cmdy          s              9a   inz
         d a_cdmy          s              9a   inz

          
    *=====================================================================
         
    d bom_d_dat       s               d   inz
         d boq_d_dat       s               d   inz
         d boy_d_dat       s               d   inz

          
    *====================================================================
         
    d eom_d_dat       s               d   inz
         d eoq_d_dat       s               d   inz
         d eoy_d_dat       s               d   inz

    *====================================================================
          /
    free
           
    // Current Date to Date Field
              
    d_dat = %date();

           
    // Date to Numeric-ISO
              
    n_iso = %dec( %char(d_dat : *iso0) : 0);

           
    // Date to Alpha-ISO
              
    a_iso = %char(d_dat : *iso);

           
    // Date to Numeric-USA
              
    n_usa = %dec( %char(d_dat : *usa0) : 0);

           
    // Date to Alpha-USA
              
    a_usa = %char(d_dat : *usa);

           
    // Date to Numeric-EUR
              
    n_eur = %dec( %char(d_dat : *eur0) : 0);

           
    // Date to Alpha-EUR
              
    a_eur = %char(d_dat : *eur);

           
    // Date to Numeric-JIS
              
    n_jis = %dec( %char(d_dat : *jis0) : 0);

           
    // Date to Alpha-JIS
              
    a_jis = %char(d_dat : *jis);

           
    // Date to Numeric-LONGJUL
              
    n_longjul = %dec( %char(d_dat : *longjul0) : 0);

           
    // Date to Alpha-LONGJUL
              
    a_longjul = %char(d_dat : *longjul);

           
    // Date to Numeric-YMD
              
    n_ymd = %dec( %char(d_dat : *ymd0) : 0);

           
    // Date to Alpha-YMD
              
    a_ymd = %char(d_dat : *ymd);

           
    // Date to Numeric-MDY
              
    n_mdy = %dec( %char(d_dat : *mdy0) : 0);

           
    // Date to Alpha-MDY
              
    a_mdy = %char(d_dat : *mdy);

           
    // Date to Numeric-DMY
              
    n_dmy = %dec( %char(d_dat : *dmy0) : 0);

           
    // Date to Alpha-DMY
              
    a_dmy = %char(d_dat : *dmy);

           
    // Date to Numeric-JUL
              
    n_jul = %dec( %char(d_dat : *jul0) : 0);

           
    // Date to Alpha-JUL
              
    a_jul = %char(d_dat : *jul);

           
    // Date to Numeric-CYMD
              
    n_cymd = %dec( %char(d_dat : *cymd0) : 0);

           
    // Date to Alpha-CYMD
              
    a_cymd = %char(d_dat : *cymd);

           
    // Date to Numeric-CMDY
              
    n_cmdy = %dec( %char(d_dat : *cmdy0) : 0);

           
    // Date to Alpha-CMDY
              
    a_cymd = %char(d_dat : *cymd);

           
    // Date to Numeric-CMDY
              
    n_cmdy = %dec( %char(d_dat : *cmdy0) : 0);

           
    // Date to Alpha-CMDY
              
    a_cmdy = %char(d_dat : *cmdy);

           
    // Date to Numeric-CDMY
              
    n_cdmy = %dec( %char(d_dat : *cdmy0) : 0);

           
    // Date to Alpha-CDMY
              
    a_cdmy = %char(d_dat : *cdmy);

           
    //============================
           // Numeric-ISO to Numeric-USA
              
    n_usa = %dec( %char( %date(n_iso : *iso) : *usa0) : 0);

           
    // Numeric-USA to Numeric-ISO
              
    n_iso = %dec( %char( %date(n_usa : *usa) : *iso0) : 0);

           
    // Numeric-ISO to Alpha-USA
              
    a_usa = %char( %date(n_iso : *iso) : *usa);

           
    // Alpha-USA to Numeric-ISO
              
    n_iso = %dec( %char( %date(a_usa : *usa) : *iso0) : 0);

           
    // Numeric-ISO to Alpha-MDY
              
    a_mdy = %char( %date(n_iso : *iso) : *mdy);

           
    // Alpha-MDY to Numeric-ISO
              
    n_iso = %dec( %char( %date(a_mdy : *mdy) : *iso0) : 0);

           
    //===========================================================

           // Current Date to Date Field
              
    d_dat = %date();

           
    // Current Date to Numeric-USA
              
    n_usa = %dec( %char( %date() : *usa0) : 0);

           
    // Current Date to Numeric-ISO
              
    n_iso = %dec( %char( %date() : *iso0) : 0);

           
    //==========================================================

           // Beginning of Month Date to Date Field
                  
    bom_d_dat d_dat - %days( %subdt(d_dat : *days) - 1);

           
    //===========================================================

           // End of Month Date to Date Field
                  
    eom_d_dat bom_d_dat + %months(1) - %days(1);

           
    //=============================================================

           // Beginning of Quarter Date to Date Field
              
    boq_d_dat bom_d_dat - %months( %rem( %subdt(d_dat : *months) -1
              
    :3));

           
    //===============================================================

           // End of Quarter Date to Date Field
              
    eoq_d_dat boq_d_dat + %months(3) - %days(1);

           
    //===================================================================

           // Beginning of Year Date to Date Field
              
    boy_d_dat = %date( %char( %subdt(d_dat : *years)) + '-01-01' :
              *
    iso);
           
    //===================================================================

           // Quarter Number
              
    qtr_nbr = %subdt(eoq_d_dat : *months) / 3;

           
    //===================================================================

           // Day of Week (1=Monday...7=Sunday)
              
    d_o_w = %rem( %diff(d_dat monday : *days) : 7) + 1;

              if 
    d_o_w <= *zeros;
                
    d_o_w += 7;
              endif;

           
    //===================================================================
           // Day of Year
              
    d_o_y = %diffd_dat boy_d_dat : *days) + 1;

           
    //===================================================================

           // Week Number (ISO 8601)
              
    jan_4_dat = %date( %char( %subdt(d_dat : *years)) + '-01-04'
              
    : *iso);
              
    jan_4_dow = %rem( %diff(jan_4_dat monday : *days) : 7) + 1;

              
    wk_nbr = %div(d_o_y jan_4_dow 7);

              if 
    wk_nbr = *zeros;
                
    wk_nbr 53;
              endif;
           
    //===================================================================

            
    *inLR = *on;
            Return;

          /
    end-free 
    If you have any other fun dates in free format, post them !

  • #2
    Re: Fun with dates, part II

    Hi, it was a long time ago when I looked at the Fun with dates page.

    Some users posted theire code to ! (just saw it )
    if you scroll down on this page you will find more and more examples !



    Who needs more dates ...

    Like we say in europe...
    Don't worry if the world ends today,
    it's allready tomorrow in Australia !


    Or China !

    Comment


    • #3
      Re: Fun with dates, part II

      Hi,

      just a comment:
      Since release V5R3 you do not need to convert a date first into a character date, if you want to convert a date to numeric.
      The built-in-function %DEC was enhanced to convert dates directly:

      PHP Code:
        MyNumDate = %Dec(%Date(): *ISO); 
      Birgitta

      Comment


      • #4
        Re: Fun with dates, part II

        Well Marc, it looks like B just gave you some house cleaning to do

        Great Post. Might want to wrap the /free code in code tags as well, its just prettier that way.
        Your future President
        Bryce

        ---------------------------------------------
        http://www.bravobryce.com

        Comment

        Working...
        X