如何从Python中的datetime对象获取三字符格式的星期几?
我正在写一个脚本,需要在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'