www.digitalmars.com         C & C++   DMDScript  

D - date2str

reply "Carlos Santander B." <carlos8294 msn.com> writes:
I asked for it a couple of weeks ago, and so I decided I could do it for
myself, and here it is: free for anyone to use, Walter can put it in phobos
if he feels it's good enough, a set of functions to convert a d_time to a
char []. Recognized tokens are available in the source code. This is the
very first time I write some kind of parser or whatever, so it may not be
optimal or fast or up to what every one is used to, but it works.
It works ok in Windows (with some timezones, as I reported before) and
apparently the date functions are not ok in Linux, so it's not good all the
time.
Anyway, if you need it, feel free to use it.

-----------------------
Carlos Santander Bernal


begin 666 date2str.d
M+R\ 8GD 0V%R;&]S(%-A;G1A;F1E<B!"97)N86P*"G!R:79A=&4 :6UP;W)T
M('-T9"YD871E+"!S=&0N<W1R:6YG+"!S=&0N8RYS=&1I;SL*"F-L87-S($9O
M<FUA=%-T<FEN9T5X8V5P=&EO;B Z($5X8V5P=&EO;B![" ET:&ES("AC:&%R
M(%M=('-T<BD >PH)"7-U<&5R*")M86QF;W)M960 9F]R;6%T('-T<FEN9SH 
M(GYS='(I.PH)?0I]" HO* II9B!I;G9A;&ED7W1I;64 /3X (B(*9VEV96X 
M9G)I(&IA;B R,BP ,C P-" Q-SHP,SHS-"!G;70M-0H*>7EY>3U965E9.B R
M,# T"GEY/5E9.B  ("  ,#0*"DU-.B  ("  ("  ,#$*33H ("  ("  (" Q
M"DU//6UO.B  ("  :F%N"FUO;G1H.B  ("  :F%N=6%R>0H*9&0]1$0Z("  
M(" R, ID/40Z("  ("  (#(R" IW.B  ("  ("  (&9R:0IW=SH ("  ("  
M(&9R:61A>0I7.B  ("  ("  (#8*5U<Z("  ("  (" U" IH/4 Q,CH ("  
M(#4*:& ]2$ Q,CH (" P-0I(/4 R-#H ("  (#$W"DA(/4A(,C0Z("  ,3<*
M"G0Z("  ("  ("  <&T*5#H ("  ("  ("!030H*;3H ("  ("  (" S"FUM
M.B  ("  ("  ,#,*"G,]4SH ("  ("  ,S0*<W,]4U,Z("  (" S- H*>CU:
M.B  ("  (" M-0IZ>CU:6CH ("  ("TP-0IZ>GIZ/5I:6EHZ("TP-3 P" IA
M;GD ;W1H97( 8VAA<G, 87)E('=R:71T96X 87, =&AE>2!C;VUE"G1O('=R
M:71E('1H92!F;W)M871T:6YG('-Y;6)O;', *&%S(")W=R(I+"!E;F-L;W-E
M('1H96T 8F5T=V5E;B E("AL:6ME("(E=W<E(BD*=&\ =W)I=&4 =&AE("(E
M(B!S:6=N+"!W<FET92 R(&-O;G-E8W5T:79E<R H;&EK92 B)24B*0H*=&\ 
M9V5T('1H92!S86UE(')E<W5L="!A<R!S=&0N9&%T92YT;U-T<FEN9R I+"!U
M<V4*9FUT(#T (G< ;6\ 9&0 2#IM;3IS<R!')4U4)7IZ>GH >7EY>2(**B\*
M+R\ 8F%S960 ;VX <W1D+F1A=&4N=&]3=')I;F<*8VAA<B!;72!T;U-T<FEN
M9RAD7W1I;64 =&EM92QC:&%R(%M=(&9M="D >PH):68 *'1I;64 /3T 9%]T
M:6UE+FEN:70I" D)<F5T=7)N("(B.PH*"6-H87( 6UT <F5S.PH*"6-H87( 
M<VEG;CL*"6EN="!H<BP ;6XL(&QE;CL*"61?=&EM92!T+"!O9F9S970L(&1S
M=#L*" ED<W0 /2!$87EL:6=H=%-A=FEN9U1!*'1I;64I.PH);V9F<V5T(#T 
M3&]C86Q46D$ *R!D<W0[" ET(#T =&EM92 K(&]F9G-E=#L*"7-I9VX /2 G
M*R<[" EI9B H;V9F<V5T/# I('L*"0ES:6=N(#T )RTG.PH)"6]F9G-E=" ]
M("TH3&]C86Q46D$K9'-T*3L*"7T*" EM;B ](&-A<W0H:6YT*2 H;V9F<V5T
M+VUS4&5R36EN=71E*3L*"6AR(#T ;6X +R V,#L*"6UN("4](#8P.PH*"6EN
M="!7(#T 5V5E:T1A>2AT*2P*"0E-(#T 36]N=&A&<F]M5&EM92AT*2P*"0ED
M(#T 1&%T949R;VU4:6UE*'0I+ H)"4  /2!(;W5R1G)O;51I;64H="DL" D)
M;2 ]($UI;D9R;VU4:6UE*'0I+ H)"7, /2!396-&<F]M5&EM92AT*3L*"6QO
M;F< >7EY>2 ](%EE87)&<F]M5&EM92AT*3L*" EF;W( *&EN="!I.VD\9FUT
M+FQE;F=T:#LK*VDI('L*"0EI9B H9FUT6VE=/3TG)2<I" D)"6EF(" K*VD\
M9FUT+FQE;F=T:"D*"0D)"6EF("AF;71;:5T]/2<E)RD*"0D)"0ER97, ?CT 
M)R4G.PH)"0D)96QS90H)"0D)"7=H:6QE("AF;71;:5TA/2<E)RD*"0D)"0D)
M<F5S('X](&9M=%MI*RM=.PH)"0EE;'-E" D)"0E42%)/5RAF;70I.PH)"65L
M<V4 :68 *&9M=%MI73T])WDG('Q\(&9M=%MI73T])UDG*0H)"0ER97, ?CT 
M<&%R<V5996%R*&9M="QI+'EY>7DI.PH)"65L<V4 :68 *&9M=%MI73T])TTG
M*0H)"0ER97, ?CT <&%R<V5-;VYT:"AF;70L:2Q-*3L*"0EE;'-E(&EF("AF
M;71;:5T]/2=D)R!\?"!F;71;:5T]/2=$)RD*"0D)<F5S('X]('!A<G-E1&%Y
M*&9M="QI+&0I.PH)"65L<V4 :68 *&9M=%MI73T])W<G*0H)"0ER97, ?CT 
M<&%R<V57965K1&%Y*&9M="QI+%<I.PH)"65L<V4 :68 *&9M=%MI73T])U<G
M*0H)"0ER97, ?CT <&%R<V57965K1&%Y3G5M8F5R*&9M="QI+%<I.PH)"65L
M<V4 :68 *&9M=%MI73T])V G('Q\(&9M=%MI73T])T G*0H)"0ER97, ?CT 
M<&%R<V5(;W5R*&9M="QI+$ I.PH)"65L<V4 :68 *&9M=%MI73T])W0G*0H)
M"0EI9B H2#XQ,2D <F5S('X](")P;2([" D)"65L<V4 <F5S('X](")A;2([
M" D)96QS92!I9B H9FUT6VE=/3TG;2<I" D)"7)E<R!^/2!P87)S94UI;G5T
M92AF;70L:2QM+$TI.PH)"65L<V4 :68 *&9M=%MI73T])U0G*0H)"0EI9B H
M2#XQ,2D <F5S('X](")032([" D)"65L<V4 <F5S('X](")!32([" D)96QS
M92!I9B H9FUT6VE=/3TG<R< ?'P 9FUT6VE=/3TG4R<I" D)"7)E<R!^/2!P
M87)S95-E8V]N9"AF;70L:2QS*3L*"0EE;'-E(&EF("AF;71;:5T]/2=Z)R!\
M?"!F;71;:5T]/2=:)RD*"0D)<F5S('X]('!A<G-E5%HH9FUT+&DL<VEG;BQH
M<BQM;BD[" D)96QS90H)"0ER97, ?CT 9FUT6VE=.PH)"2\O<')I;G1F*");
M:3TE9"QR97,])2XJ<UU<;B(L:2QR97,I.PH)?0H*"7)E='5R;B!R97,["GT*
M"G!R:79A=&4 >PH)=F]I9"!42%)/5RAC:&%R(%M=(&9M="D >R!T:')O=R!N
M97< 1F]R;6%T4W1R:6YG17AC97!T:6]N*&9M="D[('T*" DO+R!P87)S92 G
M>7DG(&]R("=Y>7EY)R H9&]N)W0 =V]R<GD 86)O=70 =&AE(&-A<V4I" EC
M:&%R(%M=('!A<G-E665A<B H8VAA<B!;72!F;70L:6YO=70 :6YT('!O<RQI
M;G0 >65A<BD >PH)"6EF("AP;W,\/69M="YL96YG=& M-"D*"0D):68 *"!C
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
M6UT ;F%M92 ]" D)"5L (G-U;F1A>2(L(")M;VYD87DB+" B='5E<V1A>2(L
M" D)"2)W961N97-D87DB+" B=&AU<G-D87DB+" B9G)I9&%Y(BP (G-A='5R
M9&%Y(B!=+ H)"0ES:&]R=&YA;64 /0H)"0E;(")S=6XB+" B;6]N(BP (G1U
M92(L(")W960B+" B=&AU(BP (F9R:2(L(")S870B(%T[" D):68 *&QO;F=N
M86UE*0H)"0ER971U<FX ;F%M95MW965K9&%Y73L*"0ER971U<FX <VAO<G1N
M86UE6W=E96MD87E=.PH)?0H*"2\O(&-H87( +3X 8VAA<B!;70H)8VAA<B!;
M72!T;U-T<BAC:&%R(&,I('L*"0EC:&%R(%M=('([" D)<B!^/2!C.PH)"7)E
M='5R;B!R.PH)?0H*"2\O('-T<C$ /3T <W1R,BP =R]O(&-A<V4*"6)O;VP 
M8V]M<" H(&-H87( 6UT <W1R,2P 8VAA<B!;72!S='(R("D >PH)"6EF("AS
M='(Q+FQE;F=T:"$]<W1R,BYL96YG=& I" D)"7)E='5R;B!F86QS93L-" D)
M=F5R<VEO;B H5VEN9&]W<RD-" D)"7)E='5R;B!S=')I8VUP*"!T;U-T<FEN
M9WHH<W1R,2DL('1O4W1R:6YG>BAS='(R*2 I(#T](# [#0H)"65L<V4*"0D)
M<F5T=7)N('-T<F-A<V5C;7 H('1O4W1R:6YG>BAS='(Q*2P =&]3=')I;F=Z
M*'-T<C(I("D /3T ,#L*"7T*#0H)97AT97)N("A#*3H*"0EV97)S:6]N("A7
M:6YD;W=S*0H)"0EI;G0 <W1R:6-M<" H8VAA<B J+"!C:&%R("HI.PH)"65L
M<V4-" D)"6EN="!S=')C87-E8VUP("AC:&%R("HL(&-H87( *BD[#0I]" H*
`
end
Jan 03 2004
next sibling parent reply "Walter" <walter digitalmars.com> writes:
How does it differ from std.date.toDateString()?

"Carlos Santander B." <carlos8294 msn.com> wrote in message
news:bt81jd$2j3v$1 digitaldaemon.com...
 I asked for it a couple of weeks ago, and so I decided I could do it for
 myself, and here it is: free for anyone to use, Walter can put it in
phobos
 if he feels it's good enough, a set of functions to convert a d_time to a
 char []. Recognized tokens are available in the source code. This is the
 very first time I write some kind of parser or whatever, so it may not be
 optimal or fast or up to what every one is used to, but it works.
 It works ok in Windows (with some timezones, as I reported before) and
 apparently the date functions are not ok in Linux, so it's not good all
the
 time.
 Anyway, if you need it, feel free to use it.

 -----------------------
 Carlos Santander Bernal
Jan 04 2004
parent reply "Carlos Santander B." <carlos8294 msn.com> writes:
"Walter" <walter digitalmars.com> wrote in message
news:bt8jpq$cem$1 digitaldaemon.com...
| How does it differ from std.date.toDateString()?
|

That you can specify exactly the format of your time or date, just like you
would in Excel, VB, Oracle, MS-SQL, etc.

-----------------------
Carlos Santander Bernal
Jan 04 2004
parent "Walter" <walter digitalmars.com> writes:
"Carlos Santander B." <carlos8294 msn.com> wrote in message
news:bt9vno$2c5k$1 digitaldaemon.com...
 "Walter" <walter digitalmars.com> wrote in message
 news:bt8jpq$cem$1 digitaldaemon.com...
 | How does it differ from std.date.toDateString()?
 |

 That you can specify exactly the format of your time or date, just like
you
 would in Excel, VB, Oracle, MS-SQL, etc.
Ok!
Jan 04 2004
prev sibling parent "Carlos Santander B." <carlos8294 msn.com> writes:
Sorry, I found a couple of bugs with "month", "W" and "WW". Fixed now.

-----------------------
Carlos Santander Bernal


begin 666 date2str.d
M+R\ 8GD 0V%R;&]S(%-A;G1A;F1E<B!"97)N86P*"G!R:79A=&4 :6UP;W)T
M('-T9"YD871E+"!S=&0N<W1R:6YG+"!S=&0N8RYS=&1I;SL*"F-L87-S($9O
M<FUA=%-T<FEN9T5X8V5P=&EO;B Z($5X8V5P=&EO;B![" ET:&ES("AC:&%R
M(%M=('-T<BD >PH)"7-U<&5R*")M86QF;W)M960 9F]R;6%T('-T<FEN9SH 
M(GYS='(I.PH)?0I]" HO* II9B!I;G9A;&ED7W1I;64 /3X (B(*9VEV96X 
M9G)I(&IA;B R,BP ,C P-" Q-SHP,SHS-"!G;70M-0H*>7EY>3U965E9.B R
M,# T"GEY/5E9.B  ("  ,#0*"DU-.B  ("  ("  ,#$*33H ("  ("  (" Q
M"DU//6UO.B  ("  :F%N"FUO;G1H.B  ("  :F%N=6%R>0H*9&0]1$0Z("  
M(" R, ID/40Z("  ("  (#(R" IW.B  ("  ("  (&9R:0IW=SH ("  ("  
M(&9R:61A>0I7.B  ("  ("  (#8*5U<Z("  ("  (" U" IH/4 Q,CH ("  
M(#4*:& ]2$ Q,CH (" P-0I(/4 R-#H ("  (#$W"DA(/4A(,C0Z("  ,3<*
M"G0Z("  ("  ("  <&T*5#H ("  ("  ("!030H*;3H ("  ("  (" S"FUM
M.B  ("  ("  ,#,*"G,]4SH ("  ("  ,S0*<W,]4U,Z("  (" S- H*>CU:
M.B  ("  (" M-0IZ>CU:6CH ("  ("TP-0IZ>GIZ/5I:6EHZ("TP-3 P" IA
M;GD ;W1H97( 8VAA<G, 87)E('=R:71T96X 87, =&AE>2!C;VUE"G1O('=R
M:71E('1H92!F;W)M871T:6YG('-Y;6)O;', *&%S(")W=R(I+"!E;F-L;W-E
M('1H96T 8F5T=V5E;B E("AL:6ME("(E=W<E(BD*=&\ =W)I=&4 =&AE("(E
M(B!S:6=N+"!W<FET92 R(&-O;G-E8W5T:79E<R H;&EK92 B)24B*0H*=&\ 
M9V5T('1H92!S86UE(')E<W5L="!A<R!S=&0N9&%T92YT;U-T<FEN9R I+"!U
M<V4*9FUT(#T (G< ;6\ 9&0 2#IM;3IS<R!')4U4)7IZ>GH >7EY>2(**B\*
M+R\ 8F%S960 ;VX <W1D+F1A=&4N=&]3=')I;F<*8VAA<B!;72!T;U-T<FEN
M9RAD7W1I;64 =&EM92QC:&%R(%M=(&9M="D >PH):68 *'1I;64 /3T 9%]T
M:6UE+FEN:70I" D)<F5T=7)N("(B.PH*"6-H87( 6UT <F5S.PH*"6-H87( 
M<VEG;CL*"6EN="!H<BP ;6XL(&QE;CL*"61?=&EM92!T+"!O9F9S970L(&1S
M=#L*" ED<W0 /2!$87EL:6=H=%-A=FEN9U1!*'1I;64I.PH);V9F<V5T(#T 
M3&]C86Q46D$ *R!D<W0[" ET(#T =&EM92 K(&]F9G-E=#L*"7-I9VX /2 G
M*R<[" EI9B H;V9F<V5T/# I('L*"0ES:6=N(#T )RTG.PH)"6]F9G-E=" ]
M("TH3&]C86Q46D$K9'-T*3L*"7T*" EM;B ](&-A<W0H:6YT*2 H;V9F<V5T
M+VUS4&5R36EN=71E*3L*"6AR(#T ;6X +R V,#L*"6UN("4](#8P.PH*"6EN
M="!7(#T 5V5E:T1A>2AT*2P*"0E-(#T 36]N=&A&<F]M5&EM92AT*2P*"0ED
M(#T 1&%T949R;VU4:6UE*'0I+ H)"4  /2!(;W5R1G)O;51I;64H="DL" D)
M;2 ]($UI;D9R;VU4:6UE*'0I+ H)"7, /2!396-&<F]M5&EM92AT*3L*"6QO
M;F< >7EY>2 ](%EE87)&<F]M5&EM92AT*3L*" EF;W( *&EN="!I.VD\9FUT
M+FQE;F=T:#LK*VDI('L*"0EI9B H9FUT6VE=/3TG)2<I" D)"6EF(" K*VD\
M9FUT+FQE;F=T:"D*"0D)"6EF("AF;71;:5T]/2<E)RD*"0D)"0ER97, ?CT 
M)R4G.PH)"0D)96QS90H)"0D)"7=H:6QE("AF;71;:5TA/2<E)RD*"0D)"0D)
M<F5S('X](&9M=%MI*RM=.PH)"0EE;'-E" D)"0E42%)/5RAF;70I.PH)"65L
M<V4 :68 *&9M=%MI73T])WDG('Q\(&9M=%MI73T])UDG*0H)"0ER97, ?CT 
M<&%R<V5996%R*&9M="QI+'EY>7DI.PH)"65L<V4 :68 *&9M=%MI73T])TTG
M*0H)"0ER97, ?CT <&%R<V5-;VYT:"AF;70L:2Q-*3L*"0EE;'-E(&EF("AF
M;71;:5T]/2=D)R!\?"!F;71;:5T]/2=$)RD*"0D)<F5S('X]('!A<G-E1&%Y
M*&9M="QI+&0I.PH)"65L<V4 :68 *&9M=%MI73T])W<G*0H)"0ER97, ?CT 
M<&%R<V57965K1&%Y*&9M="QI+%<I.PH)"65L<V4 :68 *&9M=%MI73T])U<G
M*0H)"0ER97, ?CT <&%R<V57965K1&%Y3G5M8F5R*&9M="QI+%<I.PH)"65L
M<V4 :68 *&9M=%MI73T])V G('Q\(&9M=%MI73T])T G*0H)"0ER97, ?CT 
M<&%R<V5(;W5R*&9M="QI+$ I.PH)"65L<V4 :68 *&9M=%MI73T])W0G*0H)
M"0EI9B H2#XQ,2D <F5S('X](")P;2([" D)"65L<V4 <F5S('X](")A;2([
M" D)96QS92!I9B H9FUT6VE=/3TG;2<I" D)"7)E<R!^/2!P87)S94UI;G5T
M92AF;70L:2QM+$TI.PH)"65L<V4 :68 *&9M=%MI73T])U0G*0H)"0EI9B H
M2#XQ,2D <F5S('X](")032([" D)"65L<V4 <F5S('X](")!32([" D)96QS
M92!I9B H9FUT6VE=/3TG<R< ?'P 9FUT6VE=/3TG4R<I" D)"7)E<R!^/2!P
M87)S95-E8V]N9"AF;70L:2QS*3L*"0EE;'-E(&EF("AF;71;:5T]/2=Z)R!\
M?"!F;71;:5T]/2=:)RD*"0D)<F5S('X]('!A<G-E5%HH9FUT+&DL<VEG;BQH
M<BQM;BD[" D)96QS90H)"0ER97, ?CT 9FUT6VE=.PH)"2\O<')I;G1F*");
M:3TE9"QR97,])2XJ<UU<;B(L:2QR97,I.PH)?0H*"7)E='5R;B!R97,["GT*
M"G!R:79A=&4 >PH)=F]I9"!42%)/5RAC:&%R(%M=(&9M="D >R!T:')O=R!N
M97< 1F]R;6%T4W1R:6YG17AC97!T:6]N*&9M="D[('T*" DO+R!P87)S92 G
M>7DG(&]R("=Y>7EY)R H9&]N)W0 =V]R<GD 86)O=70 =&AE(&-A<V4I" EC
M:&%R(%M=('!A<G-E665A<B H8VAA<B!;72!F;70L:6YO=70 :6YT('!O<RQI
M;G0 >65A<BD >PH)"6EF("AP;W,\/69M="YL96YG=& M-"D*"0D):68 *"!C
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
M(&-H87( 6UU;72!N86UE(#T*"0D)6R B<W5N9&%Y(BP (FUO;F1A>2(L(")T
M=65S9&%Y(BP*"0D)(G=E9&YE<V1A>2(L(")T:'5R<V1A>2(L(")F<FED87DB
M+" B<V%T=7)D87DB(%TL" D)"7-H;W)T;F%M92 ]" D)"5L (G-U;B(L(")M
M;VXB+" B='5E(BP (G=E9"(L(")T:'4B+" B9G)I(BP (G-A="( 73L*"0EI
M9B H;&]N9VYA;64I" D)"7)E='5R;B!N86UE6W=E96MD87E=.PH)"7)E='5R
M;B!S:&]R=&YA;65;=V5E:V1A>5T[" E]" H)+R\ 8VAA<B M/B!C:&%R(%M=
M" EC:&%R(%M=('1O4W1R*&-H87( 8RD >PH)"6-H87( 6UT <CL*"0ER('X]
M(&,[" D)<F5T=7)N('([" E]" H)+R\ <W1R,2 ]/2!S='(R+"!W+V\ 8V%S
M90H)8F]O;"!C;VUP("  8VAA<B!;72!S='(Q+"!C:&%R(%M=('-T<C( *2![
M" D):68 *'-T<C$N;&5N9W1H(3US='(R+FQE;F=T:"D*"0D)<F5T=7)N(&9A
M;'-E.PT*"0EV97)S:6]N("A7:6YD;W=S*0T*"0D)<F5T=7)N('-T<FEC;7 H
M('1O4W1R:6YG>BAS='(Q*2P =&]3=')I;F=Z*'-T<C(I("D /3T ,#L-" D)
M96QS90H)"0ER971U<FX <W1R8V%S96-M<"  =&]3=')I;F=Z*'-T<C$I+"!T
M;U-T<FEN9WHH<W1R,BD *2 ]/2 P.PH)?0H-" EE>'1E<FX *$,I. H)"79E
M<G-I;VX *%=I;F1O=W,I" D)"6EN="!S=')I8VUP("AC:&%R("HL(&-H87( 
M*BD[" D)96QS90T*"0D):6YT('-T<F-A<V5C;7  *&-H87( *BP 8VAA<B J
(*3L-"GT*" H`
`
end
Jan 04 2004