▼スレッド
│
└◇670:strftime がおかしい [森] 10/26 21:34
└◇672:仕様では。 [MSだす。] 10/27
└◇673:Re:仕様では。 [森] 10/27
└◇674:Re[2]:仕様では。 [森] 10/28 <
strftimeが日付しか返さないようです、スレッド一覧
簡単なテスト・プログラム
-----------------------------------------------
#include <stdio.h>
#include <time.h>
int main(int argc, char *argv[])
{
char tbuf[1024];
time_t now;
(void)time(&now);
strftime(tbuf, sizeof (tbuf), "%h %d %T ", localtime(&now));
printf("%s\n", tbuf);
}
---------------------------------------------------
を実行すると
/gcc>./strftime.exe
26
となります、この26は多分 今日の26日だと思います。
cygwin は
>uname -a
CYGWIN_NT-5.0 XXX 1.3.13(0.62/3/2) 2002-10-13 23:15 i686 unknown
gccは
>gcc -v
Reading specs from /usr/lib/gcc-lib/i686-pc-cygwin/2.95.3-5/specs
gcc version 2.95.3-5 (cygwin special)
です、また関係しそうな環境変数は
LANG=ja_JP.SJIS
TZ=JST-9
ですが、LANG に関しては
LANG=ja と LANG= を試してみましたが、変わりません。
ンー、どうなっているのだろうか、
strftime がおかしいのか、それとも私の cygwin 環境がおかしいのだろうか?
何かアドバイス等ありましたら お願いします。
この手のことは詳しくないですか、スレッド一覧
info でlibc -> Timefns -> strftime 。
これを見ると %h %T はないようです。
仕様ではないでしょうか。
ガーン、スレッド一覧
%h %b と等価である。(SU)
%T 24時間表記の時間(%H:%M:%S)。(SU)
ついつい、linux用の日本語manページを見ていました、違っているのね..
ありがとうございます。試してみます。
有難うございました、スレッド一覧
#ifdef __CYGWIN__
strftime(p, sizeof (tbuf) - (p - tbuf), "%b %d %X ", localtime(&now));
#else
strftime(p, sizeof (tbuf) - (p - tbuf), "%h %d %T ", localtime(&now));
#endif
で、解決です。
そう言えば、どこかで ”ライセンスの関係で cygwin では newlib を採用している”と言う話を聞いた覚えがあります。
newlib と LIBCとはチョット違う所があるのですね、
勉強になりました。