Как напечатать дату в обычном формате на Python?
Это мой код:
import datetime
today = datetime.date.today()
print today
это печатает: 2008-11-22, что именно то, что я хочу, но....У меня есть список, к которому я добавляю это, а затем внезапно все становится "шатким". Вот код:
import datetime
mylist = []
today = datetime.date.today()
mylist.append(today)
print mylist
Это печатает следующее:
[datetime.date(2008, 11, 22)]
как я могу получить просто простую дату, как "2008-11-22"?
21 ответов:
почему: даты-это объекты
в Python даты-это объекты. Поэтому, когда вы манипулируете ими, вы манипулируете объектами, а не строками, не метками времени или чем-то еще.
любой объект в Python имеет два строковых представления:
регулярное представление, которое используется "print", можно получить с помощью
%m- номер месяца%bэто аббревиатура месяца%yэто год последние две цифры%Yэто весь годetc
взгляните на официальную документацию или краткая справка Маккатчена вы не можете знаю их всех.
С PEP3101, каждый объект может иметь свой собственный формат, используемый автоматически методом format любой строки. В случае datetime формат является тем же самым используемым в strftime. Так что вы можете сделать то же самое, что и выше такой:
print "We are the {:%d, %b %Y}".format(today) >>> 'We are the 22, Nov 2008'преимущество этой формы заключается в том, что вы также можете конвертировать другие объекты одновременно.
С введением форматированные строковые литералы (начиная с Python 3.6, 2016-12-23) это можно записать какimport datetime f"{datetime.datetime.now():%Y-%m-%d}" >>> '2017-06-15'локализация
даты могут автоматически адаптироваться к местному языку и культуре, если вы используете их правильно, но это немного сложнее. Может быть, для другого вопроса о SO (переполнение стека); -)
import datetime print datetime.datetime.now().strftime("%Y-%m-%d %H:%M")Edit:
после предложения Cees я также начал использовать время:
import time print time.strftime("%Y-%m-%d %H:%M")
объекты date, datetime и time поддерживают метод strftime (format, чтобы создать строку, представляющую время под контролем явного формата строка.
вот список кодов формата с их директивой и значением.
%a Locale’s abbreviated weekday name. %A Locale’s full weekday name. %b Locale’s abbreviated month name. %B Locale’s full month name. %c Locale’s appropriate date and time representation. %d Day of the month as a decimal number [01,31]. %f Microsecond as a decimal number [0,999999], zero-padded on the left %H Hour (24-hour clock) as a decimal number [00,23]. %I Hour (12-hour clock) as a decimal number [01,12]. %j Day of the year as a decimal number [001,366]. %m Month as a decimal number [01,12]. %M Minute as a decimal number [00,59]. %p Locale’s equivalent of either AM or PM. %S Second as a decimal number [00,61]. %U Week number of the year (Sunday as the first day of the week) %w Weekday as a decimal number [0(Sunday),6]. %W Week number of the year (Monday as the first day of the week) %x Locale’s appropriate date representation. %X Locale’s appropriate time representation. %y Year without century as a decimal number [00,99]. %Y Year with century as a decimal number. %z UTC offset in the form +HHMM or -HHMM. %Z Time zone name (empty string if the object is naive). %% A literal '%' character.Это то, что мы можем сделать с модулями datetime и time в Python
import time import datetime print "Time in seconds since the epoch: %s" %time.time() print "Current date and time: " , datetime.datetime.now() print "Or like this: " ,datetime.datetime.now().strftime("%y-%m-%d-%H-%M") print "Current year: ", datetime.date.today().strftime("%Y") print "Month of year: ", datetime.date.today().strftime("%B") print "Week number of the year: ", datetime.date.today().strftime("%W") print "Weekday of the week: ", datetime.date.today().strftime("%w") print "Day of year: ", datetime.date.today().strftime("%j") print "Day of the month : ", datetime.date.today().strftime("%d") print "Day of week: ", datetime.date.today().strftime("%A")это будет печатать что-то вроде этого:
Time in seconds since the epoch: 1349271346.46 Current date and time: 2012-10-03 15:35:46.461491 Or like this: 12-10-03-15-35 Current year: 2012 Month of year: October Week number of the year: 40 Weekday of the week: 3 Day of year: 277 Day of the month : 03 Day of week: Wednesday
дата использования.strftime. Аргументами форматирования являются описано в документации.
это то, что вы хотели:
some_date.strftime('%Y-%m-%d')это учитывает Локаль. (сделай это)
some_date.strftime('%c')
# convert date time to regular format. d_date = datetime.datetime.now() reg_format_date = d_date.strftime("%Y-%m-%d %I:%M:%S %p") print(reg_format_date) # some other date formats. reg_format_date = d_date.strftime("%d %B %Y %I:%M:%S %p") print(reg_format_date) reg_format_date = d_date.strftime("%Y-%m-%d %H:%M:%S") print(reg_format_date)выход
2016-10-06 01:21:34 PM 06 October 2016 01:21:34 PM 2016-10-06 13:21:34
или даже
from datetime import datetime, date "{:%d.%m.%Y}".format(datetime.now())отсюда: '25.12.2013
или
"{} - {:%d.%m.%Y}".format("Today", datetime.now())Отсюда: 'Сегодня - 25.12.2013'
"{:%A}".format(date.today())Отсюда: 'Среда'
'{}__{:%Y.%m.%d__%H-%M}.log'.format(__name__, datetime.now())выход: '__главный____2014.06.09__16-56.журнал'
С конкретного типа
datetimeформатирование строк (см. nk9 по используяstr.format().) в форматированный строковый литерал (начиная с Python 3.6, 2016-12-23):>>> import datetime >>> f"{datetime.datetime.now():%Y-%m-%d}" '2017-06-15'директивы формата даты/времени не документируются как часть Синтаксис Строки Формата а в
date,datetimeиtime' sstrftime()документация. Они основаны на стандарте 1989 C, но включают в себя некоторые Директивы ISO 8601 начиная с Python 3.6.
вам нужно преобразовать объект даты и времени в строку.
следующий код работал для меня:
import datetime collection = [] dateTimeString = str(datetime.date.today()) collection.append(dateTimeString) print collectionДайте мне знать, если вам нужна дополнительная помощь.
вы можете добавить его в виде строки?
import datetime mylist = [] today = str(datetime.date.today()) mylist.append(today) print mylist
from datetime import date def time-format(): return str(date.today()) print (time-format())это будет печатать 6-23-2018, если это то, что вы хотите:)
учитывая тот факт, что вы попросили что-то простое, чтобы сделать то, что вы хотели, вы могли бы просто:
import datetime str(datetime.date.today())
С
print todayвозвращает то, что вы хотите, это означает, что сегодня объекта__str__функция возвращает строку, которую вы ищете.Так что вы можете сделать
mylist.append(today.__str__())Как хорошо.
можно использовать easy_date сделать это просто:
import date_converter my_date = date_converter.date_to_string(today, '%Y-%m-%d')
быстрый отказ от ответственности за мой ответ-я только изучаю Python около 2 недель, поэтому я ни в коем случае не эксперт; поэтому мое объяснение может быть не лучшим, и я могу использовать неправильную терминологию. В любом случае, вот он идет.
я заметил в вашем коде, что, когда вы объявили переменную
today = datetime.date.today()вы выбрали имя переменной с именем встроенной функции.когда ваша следующая строка кода
mylist.append(today)добавил свой список, он добавил всю строкуdatetime.date.today(), который был ранее установлен в качестве значенияtodayпеременная, а не просто добавлениеtoday().простое решение, хотя, возможно, не один из большинства кодеров будет использовать при работе с модулем datetime, чтобы изменить имя переменной.
вот что я пробовал:
import datetime mylist = [] present = datetime.date.today() mylist.append(present) print presentи он печатает
yyyy-mm-dd.
вот как отобразить дату как (год / месяц / день):
from datetime import datetime now = datetime.now() print '%s/%s/%s' % (now.year, now.month, now.day)
Я ненавижу идею импорта слишком много модулей для удобства. Я бы предпочел работать с модулем, который в данном случае составляет
datetimeвместо вызова нового модуляtime.>>> a = datetime.datetime(2015, 04, 01, 11, 23, 22) >>> a.strftime('%Y-%m-%d %H:%M') '2015-04-01 11:23'
Я не совсем понимаю, но, можете использовать
pandasдля получения времени в правильном формате:>>> import pandas as pd >>> pd.to_datetime('now') Timestamp('2018-10-07 06:03:30') >>> print(pd.to_datetime('now')) 2018-10-07 06:03:47 >>> pd.to_datetime('now').date() datetime.date(2018, 10, 7) >>> print(pd.to_datetime('now').date()) 2018-10-07 >>>и:
>>> l=[] >>> l.append(pd.to_datetime('now').date()) >>> l [datetime.date(2018, 10, 7)] >>> map(str,l) <map object at 0x0000005F67CCDF98> >>> list(map(str,l)) ['2018-10-07']но это хранение строк, но легко конвертировать:
>>> l=list(map(str,l)) >>> list(map(pd.to_datetime,l)) [Timestamp('2018-10-07 00:00:00')]
import datetime import time months = ["Unknown","January","Febuary","Marchh","April","May","June","July","August","September","October","November","December"] datetimeWrite = (time.strftime("%d-%m-%Y ")) date = time.strftime("%d") month= time.strftime("%m") choices = {'01': 'Jan', '02':'Feb','03':'Mar','04':'Apr','05':'May','06': 'Jun','07':'Jul','08':'Aug','09':'Sep','10':'Oct','11':'Nov','12':'Dec'} result = choices.get(month, 'default') year = time.strftime("%Y") Date = date+"-"+result+"-"+year print Dateтаким образом, Вы можете получить дату в формате, подобном этому примеру: 22-Jun-2017
Comments