В оболочке:

$ date
Do 27. Jun 15:13:13 CEST 2019

В питоне:

>>> from datetime import datetime
>>> datetime.now()
datetime.datetime(2019, 6, 27, 15, 14, 51, 314560)
>>> a = datetime.now()
>>> a.strftime("%Y%m%d")
'20190627'

Какой спецификатор формата необходим для получения точно такого же вывода , что и date, включая оценку настроек локали?

0
volingas 27 Июн 2019 в 16:17

3 ответа

Лучший ответ

Похоже, вам нужно использовать языковой стандарт

Игра в оболочке:

$ date
Thu Jun 27 10:01:03 EDT 2019
$ LC_ALL=fr_FR.UTF-8 date
jeu. juin 27 10:01:12 EDT 2019

В питоне

$ LC_ALL=fr_FR.UTF-8 python
Python 2.7.5 (default, Jun 20 2019, 20:27:34) 
[GCC 4.8.5 20150623 (Red Hat 4.8.5-36)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> from datetime import datetime
>>> datetime.now().strftime("%c")
'Thu Jun 27 10:03:13 2019'

Хм, я ожидал, что питон будет уважать мою среду. Давайте заставим проблему:

>>> import locale
>>> import os
>>> locale.setlocale(locale.LC_ALL, os.environ['LC_ALL'])
'fr_FR.UTF-8'
>>> datetime.now().strftime("%c")
'jeu. 27 juin 2019 10:04:48 '

Ах .


Читая немного дальше в документах локали, я вижу

Первоначально, когда программа запускается, языковой стандарт - это языковой стандарт C, независимо от предпочтительного языкового стандарта пользователя. Программа должна явно сказать, что она хочет, чтобы пользовательские настройки локали пользователя вызвали setlocale(LC_ALL, '').

1
glenn jackman 27 Июн 2019 в 14:15

Вы можете использовать .strftime, чтобы получить ваш собственный формат строки.

В вашем случае вы хотите:

from datetime import datetime

now = datetime.now()

print(now.strftime("%a %d. %b %H:%M:%S %Z %Y"))

ПРИМЕЧАНИЕ. способ печати названия дня / месяца зависит от текущей локали устройства. Вы можете установить пользовательскую локаль даты и времени, если вам нужны конкретные.

1
Adam.Er8 27 Июн 2019 в 13:31
from datetime import datetime
now=datetime.now()
year=now.strftime("%Y")
print("Year:",year)
month=now.strftime("%m")
print("Month:",month)
day=now.strftime("%d")
print("Day:",day)
time=now.strftime("%H:%M:%S")
print("Time:",time)
date_time=now.strftime("%m/%d/%Y, %H:%M:%S")
print("date and time:",date_time)

Выходной: год: 2019 месяц: 06 день: 27 время: 21:19:33 дата и время: 27.06.2009, 21:19:33

0
Bertrand Gazanion 27 Июн 2019 в 17:15