Мне кажется, что функция UO.Date() выдаёт дату не в текущем часовом поясе, а по Гринвичу. Например, в 0:00:15 22.10.2004 МСК UO.Date() выдаёт 41021. И начинает выдавать 41022 только начиная с 3-х или 4-х часов ночи (проверять не было сил, очень хотелось спать

)
А вот UO.Time() правильно выдаёт локальное время.