Как отформатировать datetime в python, как делает date? - PullRequest
0 голосов
/ 27 июня 2019

В оболочке:

$ 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, включая оценку настроек локали?

Ответы [ 3 ]

1 голос
/ 27 июня 2019

Похоже, вам нужно использовать locale module

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

$ 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 голос
/ 27 июня 2019

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

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

from datetime import datetime

now = datetime.now()

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

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

0 голосов
/ 27 июня 2019
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

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