Google Chrome i przejścia z Zend_Date()
05 mar 2010
Używam przeglądarki Google Chrome głównie do przeglądania sieci – bo jest szybka. Bardzo szybka.
W procesie tworzenia witryn (cała otoczka zwana developerką) używam nadal Firefoxa, gdyż ma co najmniej dwa niezastąpione rozszerzenia – Firebug i Web developer.
Mając do dyspozycji te dwie przeglądarki, jestem w stanie zalogować się do tworzonej aplikacji na dwa różne konta (bo jak wiemy każda przeglądarka to osobna sesja).
W aplikacji do porównania dat używam Zend_Date(). Kod wygląda mniej więcej tak (chodzi o sprawdzenie czy data zdarzenia jest starsza niż 7 dni):
$d1 = new Zend_Date($this->transactionData->datetimeAccepted);
$d2 = new Zend_Date(); // zwraca aktualną datę i czas
$d2->addDay(-7); // przesuwam znacznik czasu o 7 dni wstecz
if ($d1->compare($d2) === -1) { // porównuje czy data z bazy ($d1) jest wieksza od ($d2)
// ... dalszy kod
}
W Firefox pieknie działało (Zend_Date::compare() zwracał -1, co oznacza że data $d1 jest starsza od $d2). Odpaliłem widok w Chrome i jakież było moje zdziwienie, gdy wynik testu Zend_Date::compare() wynosił 1 (data $d1 jest młodsza niż $d2).
Po szybkim zbadaniu kodu okazało się, że w Chrome $d2 ma postać „amerykańską”. Sprawdziłem w Zend_Locale() i okazło się, że polskojęzyczna wersja Chrome (v. 5.0.342.1) identyfikuje się nagłówkiem:
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.2; en-US) AppleWebKit/533.2 (KHTML, like Gecko) Chrome/5.0.342.1 Safari/533.2
Szybka zdecydowałem się na „narzucenie” aplikacji odpowiednich ustawień lokalnych.
W Bootstrapie dodałem kod:
protected function _initLocale()
{
$locale = new Zend_Locale('pl');
Zend_Registry::set('Zend_Locale', $locale);
}Oczywiście to w wielkim uproszczeniu, bo aplikacją którą tworzę będzie wielojęzykowa więc i ustawienia lokalizacji będą się dynamicznie zmieniać ![]()





Komentarzy: 4
Zend_Date to jakaś totalna porażka. Niby na pierwszy rzut oka wygląda ładnie i potężnie ale jak przychodzi co do czego to idzie włosy z głowy rwać. Dużo o kwiatkach z nią związanych, m.in. metoda isDate, można poczytać w bugtrackerze.
Raven @ 05 mar 2010 18:33. #
@raven: ale czemu piszesz o kwiatkach Zend_Date, gdzie tutaj ewidentnie winne jest Google ze swoim gniotem?
matipl @ 08 mar 2010 11:40. #
W tym przypadku tak, ale z doświadczenia wiem, że lepiej w ogóle nie korzystać z tego „cuda”, coby oszczędzić sobie nerwów w przyszłości.
Raven @ 08 mar 2010 18:06. #
@Raven: ja raczej radziłbym obserwować postępy rozwoju
Poza tym pamiętajmy, że sam PHP oferuje obecnie DateTime
matipl @ 09 mar 2010 9:11. #