Mam problem z timezone dla każdego użytkownika z innego kraju, wyliczenia na bazie robię na podstawie created_at ale dla każdego użytkownika może czas się różnić i dawać całkowanie inne wyniki, jak to rozwiązać najlepiej ? #laravel #php
@Radaka: a jak użytkownikom ustalasz strefę czasową? Chyba najlepiej byłoby aby pole **created_at** było jako timestamp w bazie danych. Wtedy strefę czasową zapodajesz z perspektywy danego użytkownika. Link
@ajgoron: w tej chwili myślę zeby przy logowani sprawdzać jaką mają aktualna strefę czasową i zapisywać w bazie danych i następnie ustawiać globalnie całemu carbonowi
bazując na 12 latach doświadczenia stworzyłbym własny typ daty w obiekcie i/lub nadpisał standardowe funkcje set i get. przy zapisywaniu do DB konwertowałbym na UTC przy wyświetlaniu uwzględniałbym timezone użytkownika. nie siedzę w Laravelu ale szukałbym chyba pod Eloquent: Mutators & Casting
@Radaka @LuckyLuke_2776 jeżeli OP korzysta z carbona to wystarczy zrobić tak jak napisał. No w bd można trzymać albo jako datetime tworzony z UTC albo timestamp, który zawsze jest tworzony z UTC (trzeba to mieć na uwadze przy wstawianiu danych do bd).
@ajgoron: a w larwie nie jest tak, że i tak podstawowe funkcjonalnosci zapisują w bazie jednolity czas GMT, a dopiero warstwa aplikacji oblicza rzeczywisty czas dla konkretnego timezone?
@MrDracek: zapisuje wszystko w UTC diffForHumans() zwraca mi poprawny czas z uwzglednieniem timezonu ale nie jestem w żaden sposób przeformatować tego z uwzglednieniem timezonu, ale jest możliwość tylko nie wie jak
#laravel #php