Bug(バグ) #633
opValidatorDate with date_time option don't return time correctly. (opValidatorDateをwith_timeオプション付きで使用したとき時刻が違う値になる)
開始日:
2010-02-13
期日:
2010-03-04
進捗率:
100%
3.6 で発生するか:
Unknown (未調査)
3.8 で発生するか:
Unknown (未調査)
説明
Overview (概要)¶
opValidatorDateをwith_timeオプション付きで使用したとき、時刻に「フォームで入力した時刻 + 現在時刻」の値が設定されてしまいます。
Cause (原因)¶
配列で時刻を受け取った時、opValidatorDateの挙動が正しくありません。
122 $clean->modify('+'.(isset($value['hour']) ? intval($value['hour']) : 0).'hour');
123 $clean->modify('+'.(isset($value['second']) ? intval($value['second']) : 0).'second');
ここは、 modify()で加算するのではなく、setTime()で時刻をセットするのが正しいでしょう。
Reproduction method (再現方法)¶
検証コード
$v = new opValidatorDate(array('with_time' => true));
var_dump($v->clean(array('year' => 1989, 'month' => 1, 'day' => 8, 'hour' => 10, 'minute' => 2, 'second' => 10)));
結果として、時刻が正しくない結果が帰ってきます。
(上記の場合、現時時刻に 10時間と10秒が加算される)
Environment (環境)¶
- OpenPNE3.5.x
- OpenPNE3.4.x
- OpenPNE3.2.x
- OpenPNE3.0.x
関連するチケット
関係しているリビジョン
fixed that the opValidatorDate doesn't convert time correctly (fixes #633)
added a unit test script for opValidatorDate (fixes #633)
fixed unit test script for opValidatorDateTest (refs #633)
履歴
#1 Shogo Kawahara が約14年前に更新
- ステータス を New(新規) から Pending Fixing(修正待ち) に変更
- 担当者 を Shogo Kawahara にセット
http://github.com/upsilon/OpenPNE3/commits/c4757fb1d71783e692dfd65acd7e44e4874ed62d
のpull requestを受け取りました。
#2 Shogo Kawahara が約14年前に更新
- 対象バージョン を OpenPNE 3.5.0 にセット
#3 Shogo Kawahara が約14年前に更新
- 題名 を opValidatorDateをwith_timeオプション付きで使用したとき時刻が違う値になる から opValidatorDate with date_time option don't return time correctly. (opValidatorDateをwith_timeオプション付きで使用したとき時刻が違う値になる) に変更
#4 Youichi Kimura が約14年前に更新
- ステータス を Pending Fixing(修正待ち) から Pending Review(レビュー待ち) に変更
- 進捗率 を 0 から 50 に変更
更新履歴commit:"c4757fb1d71783e692dfd65acd7e44e4874ed62d"で適用されました。
#5 Shogo Kawahara が約14年前に更新
更新履歴commit:"d2636f1ade7d82b46b2ab347e52841a442b81ab9"で適用されました。
#6 Kousuke Ebihara が約14年前に更新
- ステータス を Pending Review(レビュー待ち) から Pending Testing(テスト待ち) に変更
#7 Mutsumi Imamura が約14年前に更新
- 期日 を 2010-03-04 にセット
- ステータス を Pending Testing(テスト待ち) から Fixed(完了) に変更
- 進捗率 を 50 から 100 に変更
動作テストしました。問題ありません。