Backport(バックポート) #637
opValidatorDate with date_time option don't return time correctly. (opValidatorDateをwith_timeオプション付きで使用したとき時刻が違う値になる)
Start date:
2010-02-13
Due date:
% Done:
100%
Description
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
Related issues
Associated revisions
fixed that the opValidatorDate doesn't convert time correctly (fixes #637;BP from #633)
added a unit test script for opValidatorDate (fixes #637;BP from #633)
History
#1
Updated by Youichi Kimura almost 13 years ago
- Status changed from New(新規) to Pending Review(レビュー待ち)
- % Done changed from 0 to 50
更新履歴commit:"43f964ab844ad693c56ee440409e3bf35191f32d"で適用されました。
#2
Updated by Shogo Kawahara almost 13 years ago
更新履歴commit:"883f6404224d9c7a0a42532b19b9e55b3fd31462"で適用されました。
#3
Updated by Kousuke Ebihara almost 13 years ago
- Status changed from Pending Review(レビュー待ち) to Pending Testing(テスト待ち)
#4
Updated by Mutsumi Imamura almost 13 years ago
- Status changed from Pending Testing(テスト待ち) to Fixed(完了)
- % Done changed from 50 to 100
動作テストOKです。