如何从python中的datetime对象以3字母格式获取星期几?

Osc*_*ani 8 python

我正在编写一个脚本,我必须使用Python中的datetime对象.在某些时候,我有一个这样的对象,我需要以3个字母的格式(即星期二,星期三等)获得星期几(这是一个数字值).这是代码的简短示例,在dateMatch.group()中,我正在做的是获取通过正则表达式匹配获得的字符串片段.

from datetime import datetime

day = dateMatch.group(2)
month = dateMatch.group(3)
year = dateMatch.group(4)
hour = dateMatch.group(5)
minute = dateMatch.group(6)
second = dateMatch.group(7)

tweetDate = datetime(int(year), months[month], int(day), int(hour), int(minute), int(second))
Run Code Online (Sandbox Code Playgroud)

从那个日期时间对象我得到一个数字日值(即18),我需要将其转换为(即Tue).

谢谢!

Pav*_*sov 12

http://docs.python.org/2/library/datetime.html#strftime-and-strptime-behavior

date,datetime和time对象都支持一个strftime(format)方法,用于创建表示显式格式字符串控制下的时间的字符串.

...

%a - Locale缩写的工作日名称.

>>> datetime.datetime.now().strftime('%a')
   'Wed'
Run Code Online (Sandbox Code Playgroud)

  • 那很好笑.在我的机器上它说"星期二".:) (2认同)

Gar*_*ees 7

对象的方法使用当前区域strftime设置来确定转换。datetime

>>> from datetime import datetime
>>> t = datetime.now()
>>> t.strftime('%a')
'Tue'
>>> import locale
>>> locale.setlocale(locale.LC_ALL, 'fr_FR')
'fr_FR'
>>> t.strftime('%a')
'Mar'
Run Code Online (Sandbox Code Playgroud)

如果这是不可接受的(例如,如果您正在格式化日期以便通过 Internet 协议传输,则Tue无论用户的区域设置如何,您实际上都可能需要该字符串),那么您需要类似以下内容:

weekdays = 'Mon Tue Wed Thu Fri Sat Sun'.split()
return weekdays[datetime.now().weekday()]
Run Code Online (Sandbox Code Playgroud)

或者您可以明确请求“C”语言环境:

locale.setlocale(locale.LC_TIME, 'C')
return datetime.now().strftime('%a')
Run Code Online (Sandbox Code Playgroud)

但是像这样设置区域设置会影响程序中所有线程上的所有格式化操作,因此这可能不是一个好主意。