Project

General

Profile

Actions

Bug #786

closed

Time#strftime で %s が負である場合に桁を間違える

Added by tadf (tadayoshi funaba) over 15 years ago. Updated about 13 years ago.

Status:
Closed
Assignee:
-
Target version:
-
ruby -v:
Backport:

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

Actions #1

Updated by matz (Yukihiro Matsumoto) over 15 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 writes:

|$ ./ruby -e "p Time.at(-1).strftime('[%03s]')"
|"[-001]"

確認ですが、あるべき値と言うのは

"[-01]"

ということで正しいですかね。printfからの類推で言えばそのよう
ですが。

=end

Actions #2

Updated by matz (Yukihiro Matsumoto) over 15 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 writes:

|なお、%s が桁を補う場合のデフォルトが 0 なのか空白なのかは、うちで
|は glibc と gnu date で異なっているようです。DateTime では、0 を補
|うことにしています。

ruby -e "p Time.at(-1).strftime('[%3s]')"

の結果は、という話だと思うのですが、ここで0を補っちゃうと空
白で補うという指定ができないんじゃないでしょうか。デフォルト
では空白、%03sは0で補うんじゃないでしょうか。Time.strftimeは
現状では空白で補ってます。

いずれにしてもDateTimeとは揃えたいです。

=end

Actions #3

Updated by tadf (tadayoshi funaba) over 15 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

Actions #4

Updated by matz (Yukihiro Matsumoto) over 15 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 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

Actions #5

Updated by matz (Yukihiro Matsumoto) over 15 years ago

  • Status changed from Open to Closed

=begin
fixed by r20352.
=end

Actions #6

Updated by yugui (Yuki Sonoda) over 15 years ago

=begin
Yukihiro Matsumoto さんは書きました:

そうですねえ。[ruby-dev:37170]にも関係するのだと思います。
これも直した方がよいでしょう。ちょっと大がかりになりそうです
が。

この辺の修正は従来から暗黙に期待されている仕様があって、それに実装眼反し
ていた直すべきバグであると思っています。故に、1.9.1にも取り込むという方
針でいますが、良いですか?

r20347を取り込むかどうか迷ってるんですが、これはGNU compatibleであるとい
うのが仕様だったと言うことなんでしょうか?

--
Yugui
http://yugui.jp
私は私をDumpする

=end

Actions #7

Updated by matz (Yukihiro Matsumoto) over 15 years ago

=begin
まつもと ゆきひろです

In message "Re: [ruby-dev:37229] 仕様確認"
on Sat, 29 Nov 2008 01:19:35 +0900, "Yugui (Yuki Sonoda)" writes:

|この辺の修正は従来から暗黙に期待されている仕様があって、それに実装眼反し
|ていた直すべきバグであると思っています。故に、1.9.1にも取り込むという方
|針でいますが、良いですか?

一連のstrftime.cに対する修正は1.9.1に取り込んでも構わないと
思います。

|r20347を取り込むかどうか迷ってるんですが、これはGNU compatibleであるとい
|うのが仕様だったと言うことなんでしょうか?

テスト名称からはそのように読めますが、実際にはTime#strftimeと
の一貫性を実現したということではないでしょうか。ので、取り込
んだ方がよいと思います。ふなばさんのご意見もお伺いすべきでしょ
うが。

=end

Actions #8

Updated by tadf (tadayoshi funaba) over 15 years ago

=begin

|この辺の修正は従来から暗黙に期待されている仕様があって、それに実装眼反し
|ていた直すべきバグであると思っています。故に、1.9.1にも取り込むという方
|針でいますが、良いですか?

一連のstrftime.cに対する修正は1.9.1に取り込んでも構わないと
思います。

GNU 拡張を基本に (ただし納得できない部分には拘らない) という話だったの
で、その方針でよいと思います。

=end

Actions

Also available in: Atom PDF

Like0
Like0Like0Like0Like0Like0Like0Like0Like0