#python #pandas #windows #datetime #windows-subsystem-for-linux
Вопрос:
У меня есть программа, которая делит дату и время на минуты — часы. Это хорошо работает в Windows, но попытка использовать его на сервере или WSL не сработала
filter_by = pd.Timestamp("today").floor("H") - pd.offsets.Minute(
int(time)
)
Тот же код, который выполняется в WSL,
Я получаю
2021-11-17T17:45:00.000000000
Во время работы в Windows я получаю правильное время
2021-11-17T23:30:00.000000000
Я также изменил настройки времени Ubuntu на Asia / Kolkata, Windows находится на Asia / Kolkata, но это все равно не сработало.
Есть предложения?
Комментарии:
1. Я подозреваю, что в Windows и WSL разные настройки часового пояса (не уверен, что измененные вами настройки действительно влияют на то, что использует Python / pandas). Попробуйте
pd.Timestamp('today', tz='UTC')
, и вы должны получить согласующиеся результаты.2. Эй, @MrFuppes, спасибо, но даже это не сработало
Ответ №1:
Попробовав все решения, которые я смог найти,
изменение временного смещения на python — это то, что сработало для меня
tz_IN = pytz.timezone("Asia/Kolkata")
datetime_IN = datetime.datetime.now(tz_IN) - datetime.timedelta(
minutes=int(time)
)
Комментарии:
1. Что такое переменная
time
?2. @MrFuppes это ввод числа, заданный пользователем, вы можете попробовать его в прямом эфире здесь. ссылка На бифуркацию времени 15-30-45 является переменной времени
3. если это просто смещение, я не думаю, что это имеет отношение к вопросу, нет? Кроме того,
pd.Timestamp("today").floor("H")
иdatetime.datetime.now(tz_IN)
отличаются тем, что первый установлен на час, а второй — нет.4. @MrFuppes спасибо за предложение, я переключился на python и работал, так как не хотел тратить больше времени, и если кто-то застрял в подобной проблеме, может переключиться, если потребуется быстрое решение, но все же мне интересно, почему это
pd.Timestamp("today").floor("H")
работало в ОС Windows, но не в Ubuntu, однако, 1 за ответ 🙂