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

时间:2013-03-19 20:20:45

标签: 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))

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

谢谢!

4 个答案:

答案 0 :(得分: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'

答案 1 :(得分:1)

strftime methoddatetime object使用current locale来确定转化。

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

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

答案 2 :(得分: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

答案 3 :(得分:0)

而不是硬编码[“Mon”,“Tue”,“Wed”,“Thu”,“Fri”,“Sat”,“Sun”],尝试:

import calendar
weekdays = [x for x in calendar.day_abbr]  # in the current locale