如何从Python的datetime对象中获取一周中的日期并以三个字母的格式显示?

14
我正在编写一个Python脚本,需要处理日期时间对象。在某个时候,我有一个日期时间对象,我需要以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),我需要将其转换为星期几的简称(即Tue)。

谢谢!

4个回答

23

7

strftime 方法 是一个 datetime 对象 的方法,它使用当前语言环境(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'

如果这种方式不可接受(例如,如果您正在格式化日期以便通过互联网协议进行传输,则可能实际上需要字符串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')

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

0

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

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

0
我使用的文档是: http://docs.python.org/2/library/datetime.html 首先,您需要今天的日期:
today = date.today() # Which returns a date object

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

weekday

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接