操作
Bug(バグ) #3291
未完了opValidatorDate がタイムゾーンを考慮していない可能性がある.
開始日:
2013-01-10
期日:
進捗率:
0%
予定工数:
3.6 で発生するか:
Unknown (未調査)
3.8 で発生するか:
Unknown (未調査)
説明
概要¶
後に示すテストコードを実行した際にパスしない. sfValidatorDate ではパスするため,もしかするとタイムゾーンの環境や設定によっては正しい動作をしない可能性がある.実際に起こりうる問題については調査しきれていないため、タイトル通り「可能性がある」という点でチケットを作成しておく.
問題点や修正点が明確になった場合はチケットタイトルおよびチケット本文を正しいものに差し替えてください.
テストコード¶
1 <?php 2 3 include_once dirname(__FILE__) . '/../../bootstrap/unit.php'; 4 5 $t = new lime_test(1, new lime_output_color()); 6 7 $v = new opValidatorDate(); 8 9 $t->diag('opValidatorDate'); 10 11 // timezones 12 $defaultTimezone = new DateTimeZone(date_default_timezone_get()); 13 $otherTimezone = new DateTimeZone('US/Pacific'); 14 if ($defaultTimezone->getOffset(new DateTime()) == $otherTimezone->getOffset(new DateTime())) 15 { 16 $otherTimezone = new DateTimeZone('US/Eastern'); 17 } 18 19 $date = new DateTime('2000-01-01T00:00:00-00:00'); 20 $date->setTimezone($otherTimezone); 21 $v->setOption('with_time', true); 22 $clean = $v->clean($date->format(DATE_ATOM)); 23 24 $date->setTimezone($defaultTimezone); 25 $t->is($clean, $date->format('Y-m-d H:i:s'), '->clean() respects incoming and default timezones');
実行結果
$ php opValidatorDateTestForTimezone.php not ok 1 - ->clean() respects incoming and default timezones # Failed test (./opValidatorDateTestForTimezone.php at line 25) # got: '1999-12-31 16:00:00' # expected: '2000-01-01 09:00:00'
関連チケット¶
Bug(バグ) #2882: opValidatorDate で「年」に 0 を入力した場合に空値として認識される - OpenPNE 3 - OpenPNE Issue Tracking System
https://redmine.openpne.jp/issues/2882#note-11
操作