Q: I have a need to retrieve the current time (seconds, not milliseconds) and
format it.
A: There's an API which will do MOST (but not all) of the work for you.
Specifically, it does not know how to format an offset from UTC (the
"-0500" part)
The API that does all of the formatting is the "CEEDATM" API which can
be found in the "ILE CEE APIs" manual.
Here's an example of what you're trying to do:
** Get local time API
d CEELOCT PR opdesc
d output_lil Like(discard1)
d output_secs Like(cur_time)
d output_greg Like(discard2)
d output_fc Like(Fc) Options(*Nopass)
** Convert to arbitrary timestamp API
d CEEDATM PR opdesc
d input_secs Like(cur_time)
d picture_str Like(Pictureds) const
d output_ts Like(Pictureds)
d output_fc Like(Fc) Options(*Nopass)
* Get offset from UTC API
d CEEUTCO PR
d hours Like(hrs2utc)
d minutes Like(mins2utc)
d seconds Like(cur_time)
d output_fc Like(Fc) Options(*Nopass)
d discard1 S 10I 0
d cur_time S 8F
d discard2 S 23A
d hrs2utc s 10I 0
d mins2utc s Like(hrs2utc)
d hh s 2A
d mm s 2A
d discard3 s Like(cur_time)
d WDate s Like(Pictureds)
d Fc ds
d sev 5U 0
d msgno 5U 0
d flags 1A
d facid 3A
d isi 10U 0
d Pictureds ds
d Piclen1 1 2I 0
d Picture 3 34A
d Piclen2 1 4I 0
d Picture2 5 36A
* Get current local time from clock:
c Callp CEELOCT(discard1 : cur_time : discard2)
* Convert to e-mail format:
c Callp CEEDATM(cur_time :
c 'Www, DD Mmm YYYY HH:MI:SS' :
c WDate)
* Retrieve offset from UTC
c Callp CEEUTCO(hrs2utc : mins2utc : discard3)
* Format the UTC offset nicely
* and tack it onto the string...
c If hrs2utc < *Zero
c Eval WDate = %trimr(WDate) + ' -'
c Eval hrs2utc = 0 - hrs2utc
c Else
c Eval WDate = %trimr(WDate) + ' +'
c EndIf
c Move hrs2utc hh
c Move mins2utc mm
c Eval WDate = %TrimR(WDate) + hh + mm
C* Let's see if that worked :)
c dsply wDate
c eval *inlr = *on
Thanks to Scott Klement & Jon A. Erickson
阅读(1154) | 评论(0) | 转发(0) |