我正在编写一个脚本,我必须使用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)。
谢谢!
答案 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
method的datetime
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