10

我正在编写一个脚本,我必须在 Python 中使用 datetime 对象。在某些时候,我有其中一个对象,我需要以 3 个字母的格式(即 Tue、Wed 等)获取星期几(这是一个数字值)。这是代码的简短示例,在 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))

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

谢谢!

4

4 回答 4

16

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

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

...

%a — 区域设置的缩写工作日名称。

>>> datetime.datetime.now().strftime('%a')
   'Wed'
于 2013-03-19T20:22:31.010 回答
4

对象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'

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

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

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

locale.setlocale(locale.LC_TIME, 'C')
return datetime.now().strftime('%a')

但是像这样设置语言环境会影响程序中所有线程上的所有格式化操作,所以这可能不是一个好主意。

于 2013-03-19T20:34:23.670 回答
0

我使用的文档:http: //docs.python.org/2/library/datetime.html

首先你需要今天的日期:

today = date.today() # Which returns a date object

可以使用以下方法从日期对象中找到工作日:

weekday = today.timetuple()[6] # Getting the 6th item in the tuple returned by timetuple

这将返回自星期一以来的天数(0 表示星期一),使用此整数可以执行以下操作:

print ["Mon","Tue","Wed","Thu","Fri","Sat","Sun"][weekday] # Prints out the weekday in three chars

结合你得到:

from datetime import date

today = date.today() # Gets the date in format "yyyy-mm-ddd"
print today
weekday = today.timetuple()[6] # Gets the days from monday
print ["Mon","Tue","Wed","Thu","Fri","Sat","Sun"][weekday] # Prints out the weekday in three chars
于 2013-03-19T20:43:47.773 回答
0

不要硬编码 ["Mon","Tue","Wed","Thu","Fri","Sat","Sun"],尝试:

import calendar
weekdays = [x for x in calendar.day_abbr]  # in the current locale
于 2016-03-23T07:17:03.853 回答