如何从Python中的datetime对象获取三字符格式的星期几?

14 投票
4 回答
17291 浏览
提问于 2025-04-17 19:40

我正在写一个脚本,需要在Python中处理日期时间对象。在某个时刻,我有一个这样的对象,我需要获取这一天是星期几(用数字表示),并把它转换成三个字母的格式(比如:周二、周三等等)。下面是代码的一个简短示例,在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),然后我需要把它转换成(比如:Tue)。

谢谢!

4 个回答

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

如果这样做不合适(比如说,你需要把日期格式化成适合网络传输的格式,可能不管用户的地区设置,你都需要字符串 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')

不过,像这样设置地区会影响你程序中所有线程的所有格式化操作,所以这可能不是个好主意。

23

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

日期、日期时间和时间对象都有一个叫做 strftime(format) 的方法,这个方法可以根据你指定的格式,把时间转换成一个字符串。

...

%a — 这是你所在地区的缩写星期名称。

>>> datetime.datetime.now().strftime('%a')
   'Wed'

撰写回答