Bug #786
closedTime#strftime で %s が負である場合に桁を間違える
Added by tadf (tadayoshi funaba) over 16 years ago. Updated about 14 years ago.
Description
=begin
$ ./ruby -e "p Time.at(-1).strftime('[%03s]')"
"[-001]"
ちなみにうちの環境だと glibc がボロボロのよう。
$ ruby18 -e "p Time.at(-1).strftime('[%05s]')"
"[000-1]"
$ ruby18 -e "p Time.at(-1).strftime('[%05z]')"
"[0000+00900]"
なお、%s が桁を補う場合のデフォルトが 0 なのか空白なのかは、うちで
は glibc と gnu date で異なっているようです。DateTime では、0 を補
うことにしています。
=end
Updated by matz (Yukihiro Matsumoto) over 16 years ago
=begin
まつもと ゆきひろです
In message "Re: [ruby-dev:37168] [Bug #786] Time#strftime で %s が負である場合に桁を間違える"
on Mon, 24 Nov 2008 23:47:08 +0900, tadayoshi funaba redmine@ruby-lang.org writes:
|$ ./ruby -e "p Time.at(-1).strftime('[%03s]')"
|"[-001]"
確認ですが、あるべき値と言うのは
"[-01]"
ということで正しいですかね。printfからの類推で言えばそのよう
ですが。
=end
Updated by matz (Yukihiro Matsumoto) over 16 years ago
=begin
まつもと ゆきひろです
もうひとつ。
In message "Re: [ruby-dev:37168] [Bug #786] Time#strftime で %s が負である場合に桁を間違える"
on Mon, 24 Nov 2008 23:47:08 +0900, tadayoshi funaba redmine@ruby-lang.org writes:
|なお、%s が桁を補う場合のデフォルトが 0 なのか空白なのかは、うちで
|は glibc と gnu date で異なっているようです。DateTime では、0 を補
|うことにしています。
ruby -e "p Time.at(-1).strftime('[%3s]')"
の結果は、という話だと思うのですが、ここで0を補っちゃうと空
白で補うという指定ができないんじゃないでしょうか。デフォルト
では空白、%03sは0で補うんじゃないでしょうか。Time.strftimeは
現状では空白で補ってます。
いずれにしてもDateTimeとは揃えたいです。
=end
Updated by tadf (tadayoshi funaba) over 16 years ago
=begin
ruby -e "p Time.at(-1).strftime('[%3s]')"
の結果は、という話だと思うのですが、ここで0を補っちゃうと空
白で補うという指定ができないんじゃないでしょうか。デフォルト
では空白、%03sは0で補うんじゃないでしょうか。Time.strftimeは
現状では空白で補ってます。
%e、%k、%l などは空白ですが、あとは大体 0 ですね。%s はどちらにも分類で
きないパターンなのかもしれません。
gnu date では 0 で補っています。
$ date -d '2001-02-03' +%20s
00000000000981126000
空白でも補えます。
$ date -d '2001-02-03' +%_20s
981126000
僕が間違っているのか、glibc は思った以上にいい加減なのか、"%^P" なんか
も大文字になるべきなんじゃないかと思うけど、なってないみたいですね。
$ ruby18 -e "p Time.mktime(2000,1,1,3).strftime('%10i')"
" %10i"
このあたりバグじゃないかと思うんですが。
=end
Updated by matz (Yukihiro Matsumoto) over 16 years ago
=begin
まつもと ゆきひろです
In message "Re: [ruby-dev:37180] Re: [Bug #786] Time#strftime で %s が負である場合に桁を間違える"
on Tue, 25 Nov 2008 07:34:19 +0900, Tadayoshi Funaba tadf@dotrb.org writes:
|> >ruby -e "p Time.at(-1).strftime('[%3s]')"
|>
|> の結果は、という話だと思うのですが、ここで0を補っちゃうと空
|> 白で補うという指定ができないんじゃないでしょうか。デフォルト
|> では空白、%03sは0で補うんじゃないでしょうか。Time.strftimeは
|> 現状では空白で補ってます。
|
|%e、%k、%l などは空白ですが、あとは大体 0 ですね。%s はどちらにも分類で
|きないパターンなのかもしれません。
|
|gnu date では 0 で補っています。
|
|$ date -d '2001-02-03' +%20s
|00000000000981126000
|
|空白でも補えます。
|
|$ date -d '2001-02-03' +%_20s
| 981126000
ああ、なるほど。_を使うんですね。見落としてました。それなら
どちらでもよいと思います。0で補いましょうか。
|僕が間違っているのか、glibc は思った以上にいい加減なのか、"%^P" なんか
|も大文字になるべきなんじゃないかと思うけど、なってないみたいですね。
Rubyもですね。直しましょう。
|$ ruby18 -e "p Time.mktime(2000,1,1,3).strftime('%10i')"
|" %10i"
|
|このあたりバグじゃないかと思うんですが。
そうですねえ。[ruby-dev:37170]にも関係するのだと思います。
これも直した方がよいでしょう。ちょっと大がかりになりそうです
が。
=end
Updated by matz (Yukihiro Matsumoto) over 16 years ago
- Status changed from Open to Closed
=begin
fixed by r20352.
=end
Updated by yugui (Yuki Sonoda) over 16 years ago
=begin
Yukihiro Matsumoto さんは書きました:
そうですねえ。[ruby-dev:37170]にも関係するのだと思います。
これも直した方がよいでしょう。ちょっと大がかりになりそうです
が。
この辺の修正は従来から暗黙に期待されている仕様があって、それに実装眼反し
ていた直すべきバグであると思っています。故に、1.9.1にも取り込むという方
針でいますが、良いですか?
r20347を取り込むかどうか迷ってるんですが、これはGNU compatibleであるとい
うのが仕様だったと言うことなんでしょうか?
--
Yugui yugui@yugui.jp
http://yugui.jp
私は私をDumpする
=end
Updated by matz (Yukihiro Matsumoto) over 16 years ago
=begin
まつもと ゆきひろです
In message "Re: [ruby-dev:37229] 仕様確認"
on Sat, 29 Nov 2008 01:19:35 +0900, "Yugui (Yuki Sonoda)" yugui@yugui.jp writes:
|この辺の修正は従来から暗黙に期待されている仕様があって、それに実装眼反し
|ていた直すべきバグであると思っています。故に、1.9.1にも取り込むという方
|針でいますが、良いですか?
一連のstrftime.cに対する修正は1.9.1に取り込んでも構わないと
思います。
|r20347を取り込むかどうか迷ってるんですが、これはGNU compatibleであるとい
|うのが仕様だったと言うことなんでしょうか?
テスト名称からはそのように読めますが、実際にはTime#strftimeと
の一貫性を実現したということではないでしょうか。ので、取り込
んだ方がよいと思います。ふなばさんのご意見もお伺いすべきでしょ
うが。
=end
Updated by tadf (tadayoshi funaba) over 16 years ago
=begin
|この辺の修正は従来から暗黙に期待されている仕様があって、それに実装眼反し
|ていた直すべきバグであると思っています。故に、1.9.1にも取り込むという方
|針でいますが、良いですか?一連のstrftime.cに対する修正は1.9.1に取り込んでも構わないと
思います。
GNU 拡張を基本に (ただし納得できない部分には拘らない) という話だったの
で、その方針でよいと思います。
=end