Konwersja date to datetime

Witam

Zaczne odrazu od przykladu.

model Lesson posiada columne :date typu datetime

[code]>> d = Date.parse ‘2009-08-15’
=> Sat, 15 Aug 2009

l = Lesson.new :date => d
=> #<Lesson id: nil, date: “2009-08-14 22:00:00”>[/code]
natomiast jesli damy

>> d = Date.parse '2009-08-15'.to_datetime

to wzystko działa ok

Nie wiem czemu ucina 2h.

strefa czasowa, ustawiasz to w config/envain…
masz tam w standardzie UTC, czyli bez strefy czasowej, ustaw sobie Warsaw (+2h) i formatuj czas poprzez stfrtime("%d-%m-%Y %H:%M") czy jakos tak, pozbedziesz sie znaczkow typu +0200

i takie tam,

a tak najlepiej to

http://www.ruby-doc.org/search.html?cx=011815814100681837392%3Awnccv6st5qk&q=datetime&sa=Search&cof=FORID%3A9#916

DZIEKI

… ale jednak cos dalej nie tak
po pierwsze

rake time:zones:all

Warsaw = > * UTC +01:00 * => a nie +2

pozatym po ustawieniu

config.time_zone = 'Warsaw'

dalej zjada 2h

w konsoli

>>Time.zone.name => 'Warsaw'
a co ciekawe np dla daty

d = Date.parse '2009-02-02' l = Lesson.new :date => d #<Lesson id: nil, date: "2009-02-01 23:00:00">
zjada tylko godzine (wtf!)

EDIT:

OK troche spanikowalem bo mimo ze konsola zwraca nam

Lesson.new :date => d => #<Lesson id: nil, date: "2009-08-14 22:00:00">
to teraz

>>l.date =>Sat, 15 Aug 2009
Jednak skad biora sie te magiczne konwersje raz o godzine a raz o dwie
i czemu po stworzeniu obiektu konsola pluje takimi bzdurami
troche wprowadza to chaos.

OK => ENV[‘TZ’] = ‘Warsaw’ i dziala

[quote=R~]Warsaw = > * UTC +01:00 * => a nie +2
(…)
Jednak skad biora sie te magiczne konwersje raz o godzine a raz o dwie
i czemu po stworzeniu obiektu konsola pluje takimi bzdurami
troche wprowadza to chaos.[/quote]

lol :stuck_out_tongue:

Spoko kazdemu sie zdarza ;] mi nawet az za czesto z gafami takimi wyskakiwac :stuck_out_tongue: lepiej w sumie spytac i miec z glowy nizsamemu kilka dni sie glowic

Witam

znowu ten sam problem

aplikacja ta sama teraz dodaje mi 2h

jak zamienie

config.time_zone = ‘Warsaw’

z powrotem’
config.time_zone = ‘UTC’

Witam

znowu ten sam problem

aplikacja ta sama teraz dodaje mi 2h

jak zamienie

config.time_zone = ‘Warsaw’

z powrotem’

config.time_zone = ‘UTC’

to teraz jest ok

a jak date wyswietlasz? Formatujesz ja? I kiedy dodaje jak masz UTC czy Warsaw? Co masz w bazie? co sie wyswietla? Jakie masz ustawienia. Jasnowidzów dziś brak chyba. Albo mi kumanie spadlo do zera.

Ech jak poczytalem co bylo wyzej to chyba chodzi o to ze dodawało 1 a teraz dodaje 2 godziny tak? Bo juz nie wiem.

w bazie jest ok

#<Lesson id: 1713, date: "2009-10-01 09:00:00", minutes: 45, group_id: 1, user_id: 2, localization_id: 1, info: nil, subject: nil, hour_teacher_salary: 10, status: "planowana", created_at: "2009-09-24 17:14:48", updated_at: "2009-09-24 17:14:48">

lesson.date Thu, 01 Oct 2009 11:00:00 CEST 02:00
Jak kolwiek gdzie kolwiek wyswietlam to dodaje 2h

To sie zaczelo nagle nie zauważyłem kiedy.

Wczesniej odejmowal 2h teraz dodaje

przez “chwile bylo ok” jak ustawilem timezone na ‘Warsaw’

samo sie nie zmienilo raczej :slight_smile: pewnie jakas aktualizacja sie zrobila.

Jest ok jak dla mnie.
Mam tak samo

u = User.first.updated_at
=> Sat, 05 Sep 2009 15:42:26 CEST +02:00

u.strftime("%H:%M")
=> “15:42”

Jesteśmy w czasie +2 teraz wiec do tej twojej 9:00 z bazy powinno dodac 2h i masz 11. W czym problem?

OK chyba załapałem
dzieki

podepnę się do tego tematu bo problem podobny, ustawiłem config.time_zone = “Warsaw” i po użyciu DateTime.now.midnight daje mi date z godziną 23:00, o co chodzi ?
Druga sprawa że dodanie do daty + 1.month poprostu przestawia miesiąc, tak że jeśli dam to na dzisiaj to kolejna data bedzie 4 marzec, co daje 28 dni różnicy. Jak z tym sobie radzicie ?

No bo miesiąc dla lutego to właśnie 28 dni. Jeśli dziś jest czwarty i powiem, spotkajmy się za miesiąc, to będzie mi chodziło o 4 marzec, a nie o 6 marzec. Bo ile dni ma miesiąc? 30? 31? 28? Cieszmy się, że komputerów się nie programuje z użyciem systemu babilońskiego. :slight_smile:

w sumie racja :slight_smile: