Перейти к содержимому

Как превратить число в дату python

  • автор:

Работа с датами и временем

Основной функционал для работы с датами и временем сосредоточен в модуле datetime в виде следующих классов:

Класс date

Для работы с датами воспользуемся классом date , который определен в модуле datetime. Для создания объекта date мы можем использовать конструктор date, который последовательно принимает три параметра: год, месяц и день.

date(year, month, day)

Например, создадим какую-либо дату:

import datetime yesterday = datetime.date(2017,5, 2) print(yesterday) # 2017-05-02

Если необходимо получить текущую дату, то можно воспользоваться методом today() :

from datetime import date today = date.today() print(today) # 2017-05-03 print("<>.<>.<>".format(today.day, today.month, today.year)) # 2.5.2017

С помощью свойств day, month, year можно получить соответственно день, месяц и год

Класс time

За работу с временем отвечает класс time . Используя его конструктор, можно создать объект времени:

time([hour] [, min] [, sec] [, microsec])

Конструктор последовательно принимает часы, минуты, секунды и микросекунды. Все параметры необязательные, и если мы какой-то параметр не передадим, то соответствующее значение будет инициализироваться нулем.

from datetime import time current_time = time() print(current_time) # 00:00:00 current_time = time(16, 25) print(current_time) # 16:25:00 current_time = time(16, 25, 45) print(current_time) # 16:25:45

Класс datetime

Класс datetime из одноименного модуля объединяет возможности работы с датой и временем. Для создания объекта datetime можно использовать следующий конструктор:

datetime(year, month, day [, hour] [, min] [, sec] [, microsec])

Первые три параметра, представляющие год, месяц и день, являются обязательными. Остальные необязательные, и если мы не укажем для них значения, то по умолчанию они инициализируются нулем.

from datetime import datetime deadline = datetime(2017, 5, 10) print(deadline) # 2017-05-10 00:00:00 deadline = datetime(2017, 5, 10, 4, 30) print(deadline) # 2017-05-10 04:30:00

Для получения текущих даты и времени можно вызвать метод now() :

from datetime import datetime now = datetime.now() print(now) # 2017-05-03 11:18:56.239443 print("<>.<>.<> <>:<>".format(now.day, now.month, now.year, now.hour, now.minute)) # 3.5.2017 11:21 print(now.date()) print(now.time())

С помощью свойств day, month, year, hour, minute, second можно получить отдельные значения даты и времени. А через методы date() и time() можно получить отдельно дату и время соответственно.

Преобразование из строки в дату

Из функциональности класса datetime следует отметить метод strptime() , который позволяет распарсить строку и преобразовать ее в дату. Этот метод принимает два параметра:

strptime(str, format)

Первый параметр str представляет строковое определение даты и времени, а второй параметр — формат, который определяет, как различные части даты и времени расположены в этой строке.

Для определения формата мы можем использовать следующие коды:

  • %d : день месяца в виде числа
  • %m : порядковый номер месяца
  • %y : год в виде 2-х чисел
  • %Y : год в виде 4-х чисел
  • %H : час в 24-х часовом формате
  • %M : минута
  • %S : секунда

Применим различные форматы:

from datetime import datetime deadline = datetime.strptime("22/05/2017", "%d/%m/%Y") print(deadline) # 2017-05-22 00:00:00 deadline = datetime.strptime("22/05/2017 12:30", "%d/%m/%Y %H:%M") print(deadline) # 2017-05-22 12:30:00 deadline = datetime.strptime("05-22-2017 12:30", "%m-%d-%Y %H:%M") print(deadline) # 2017-05-22 12:30:00

Как в python превратить число секунд в дату и время?

Есть время, заданное в формате (секунды с 00:00:00 01.01.2010 UTC). как его превратить в удобный вид?

  • Вопрос задан более трёх лет назад
  • 7446 просмотров

1 комментарий

Простой 1 комментарий

Что такое удобный вид, конкретно?
Решения вопроса 0
Ответы на вопрос 2
Перед ответом смотрю наличие ✔ в ваших вопросах

import datetime MY_UTC_EPOCH_START = 1262304000 # 00:00:00 01.01.2010 UTC def my_utcfromtimestamp(ts): return datetime.datetime.utcfromtimestamp(ts + MY_UTC_EPOCH_START)

Функция работает полностью аналогично стандартной datetime.datetime.utcfromtimestamp , только лишь применяя поправку на начало вашей «UTC эпохи» (полночь 1 января 2010 по Гринвичу):

>>> my_utcfromtimestamp(1) datetime.datetime(2010, 1, 1, 0, 0, 1) >>> my_utcfromtimestamp(123) datetime.datetime(2010, 1, 1, 0, 2, 3) >>> my_utcfromtimestamp(3600) datetime.datetime(2010, 1, 1, 1, 0)

Ответ написан более трёх лет назад
Комментировать
Нравится 2 Комментировать

milssky

Координатор племени фиолетовых обезьянок

from datetime import datetime ts = int("1284101485") print(datetime.datetime.fromtimestamp(ts).strftime('%Y-%m-%d %H:%M:%S'))

Преобразовать числа в дату и время

Преобразовать строку в дату-время
Всем привет! Как преобразовать строку в дату-время, и обратно, с возможностью задать формат? .

Необходимо преобразовать дату и время — из файла *.prn
Есть файл *.prn с массивом данных: 2010.10.19 01:31,1.3,1.39,1.34,1.32 2010.10.19.

Эксперт Python

7279 / 4102 / 1794
Регистрация: 27.03.2020
Сообщений: 6,926
VistaSV30, хорошо бы сам фрейм или его часть.
530 / 308 / 76
Регистрация: 10.04.2012
Сообщений: 1,143
Записей в блоге: 2
Так я загружаю данные во фрейм

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
import pandas as pd import pyodbc as sqlMS # связь с Access # ------ указать свой путь к базе данных connStr = (r"DRIVER=;" r"DBQ=c:\Users\Arlen\Python\DB_DateTime.accdb;") conn = sqlMS.connect(connStr) # создать соединение с БД cursor = conn.cursor() strSQL = ''' SELECT tbl_DT.* FROM tbl_DT ''' df = pd.read_sql(strSQL, conn) cursor.close() del cursor conn.close() df

Файл с данными прилагается, только при загрузке нужно будет указать свой путь. Я еще не разобрался, как в таких случаях указывать относительный путь.

Вложения

DB_DateTime.rar (15.8 Кб, 3 просмотров)

Эксперт Python

7279 / 4102 / 1794
Регистрация: 27.03.2020
Сообщений: 6,926
VistaSV30, у меня проблемы с драйверами — потому и спрашивал про сам сгенерированный фрейм «df»
530 / 308 / 76
Регистрация: 10.04.2012
Сообщений: 1,143
Записей в блоге: 2
Формат CSV подойдет?
Вложения

tbl_DT.rar (258 байт, 0 просмотров)

530 / 308 / 76
Регистрация: 10.04.2012
Сообщений: 1,143
Записей в блоге: 2

Сейчас еще подождите, попробую сразу фрейм сделать

Добавлено через 11 минут

1 2 3 4 5 6 7 8 9 10 11 12 13
import pandas as pd import numpy as np import datetime as DT df = pd.DataFrame(np.zeros((25,3))) start_date, end_date = DT.datetime(2020, 1, 1), DT.datetime(2020, 1, 25) res = pd.date_range(min(start_date, end_date), max(start_date, end_date)).strftime('%d-%m-%Y').tolist() df[0] = res df[1] = np.random.randint(0, 23, 25) df[2] = np.random.randint(0, 59, 25) df

Добавлено через 5 минут
Мне теперь нужно в одной колонке собрать дату и время, в таком виде:
2020-01-15 23:45:00
И чтобы это был вычисляемый формат, что бы потом можно было по ним вычислять время

Добавлено через 9 минут

1 2 3 4 5 6 7 8 9 10 11 12
import pandas as pd import numpy as np import datetime as DT df = pd.DataFrame(np.zeros((25,3))) date1, date2 = DT.datetime(2020, 1, 1), DT.datetime(2020, 1, 25) df[0] = pd.date_range(date1, date2).strftime('%d-%m-%Y').tolist() df[1] = np.random.randint(0, 23, 25) df[2] = np.random.randint(0, 59, 25) df.columns = ['Data', 'Hour', 'Min'] print(df)

Добавлено через 2 часа 3 минуты
Загрузил данные из Access и вот так их конвертировал в формат Дата-Время, но по-моему, это должно делаться как-то по другому.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33
import pandas as pd import pyodbc as sqlMS # связь с Access import datetime as DT # ------ указать свой путь к базе данных connStr = (r"DRIVER=;" r"DBQ=c:\Users\Arlen\Python\DB_DateTime.accdb;") conn = sqlMS.connect(connStr) # создать соединение с БД cursor = conn.cursor() strSQL = ''' SELECT tbl_DT.* FROM tbl_DT ''' df = pd.read_sql(strSQL, conn) cursor.close() del cursor conn.close() df['F5'] = pd.to_datetime(df['F5']) df['DT'] = 0 df['F61'] = pd.to_numeric(df['F61'], downcast='integer') df['F62'] = pd.to_numeric(df['F62'], downcast='integer') for i in range(len(df['DT'])): df['DT'][i] = DT.datetime( year=df['F5'][i].year, month=df['F5'][i].month, day=df['F5'][i].day, hour= df['F61'][i], minute= df['F62'][i], second=0) df

преобразовать дату в число питон

Как и многие люди, я переключился с Matlab на Python . Matlab представляет каждую дату как число. ( Integers — дни с 00-00-0000 , а фракции — это время в день). Я считаю, что Python делает то же самое, за исключением другой даты начала 0-0-0001 Я играю с datetime , но can not, кажется, уходит от объектов datetime и timedeltas . Я уверен, что это мертво просто, но как я могу работать с обычными старыми числами (float)? возможно как немного контекста: i введите метку даты и времени и соедините их, чтобы сделать одно значение времени:

from datetime import datetime date_object1 = datetime.strptime(date[1][0] + ' ' + date[1][1], '%Y-%m-%d %H:%M:%S') date_object2 = datetime.strptime(date[2][0] + ' ' + date[2][1], '%Y-%m-%d %H:%M:%S') 

reabow 05 янв. 2013, в 12:48
Поделиться

Я думаю, это зависит от того, какие операции с датами вы хотите сделать. Если вы привыкли выполнять математические операции, тогда подобные вещи не очень хорошо работают с датами . есть так много переменных, которые будут обрабатывать правильные объекты даты, поэтому, возможно, стоит сначала обдумать это. Просто мысль!

dmp 05 янв. 2013, в 11:40

спасибо NPE. Это похоже, за исключением того, что я хочу пойти другим путем (datetime, чтобы плавать)

reabow 05 янв. 2013, в 11:42

Дэнп, может быть, это путь. Я хотел перенести это в javascript, чтобы поиграть с d3.js. но, возможно, я слишком застрял в старых способах Matlab

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *