【发布时间】:2021-10-08 12:24:38
【问题描述】:
我的代码是:
import time
local_time = time.localtime()
time_string_d = time.strftime("%d", local_time)
time_string_m = time.strftime("%m", local_time)
time_string_y = time.strftime("%Y", local_time)
time_string_hm = time.strftime("%H:%M", local_time)
day_st = ['1', '21', '31']
day_nd = ['2', '22', '32']
day_rd = ['3', '23']
day_th = ['4', '5', '6', '7', '8', '9', '10', '11', '12', '13', '14', '15', '16', '17', '18',
'19', '20', '24', '25', '26', '27', '28', '29', '30']
def month():
if time_string_m == '1':
print('It is ' + time_string_hm)
print('January ', day())
if time_string_m == '2':
print('It is ' + time_string_hm)
print('February ', day())
if time_string_m == '3':
print('It is ' + time_string_hm)
print('March ', day())
if time_string_m == '4':
print('It is ' + time_string_hm)
print('April ', day())
if time_string_m == '5':
print('It is ' + time_string_hm)
print('May ', day())
if time_string_m == '6':
print('It is ' + time_string_hm)
print('June ', day())
if time_string_m == '7':
print('It is ' + time_string_hm)
print('July ', day())
if time_string_m == '8':
print('It is ' + time_string_hm)
print('August ', day())
if time_string_m == '9':
print('It is ' + time_string_hm)
print('September ', day())
if time_string_m == '10':
print('It is ' + time_string_hm)
print('October ', day())
if time_string_m == '11':
print('It is ' + time_string_hm)
print('November ', day())
if time_string_m == '12':
print('It is ' + time_string_hm)
print('December ', day())
else:
print('There was an error in the month detecting system.')
def day():
if time_string_d in day_st:
print('st')
if time_string_d in day_nd:
print('nd')
if time_string_d in day_rd:
print('rd')
if time_string_d in day_th:
print('th')
else:
print('There was an error in the day detecting system.')
我希望它打印以下内容:
现在是(当前时间例如:14:20)
(当前月份例如:十月,当天+ /st/nd/rd/th 例如8th)
像这样:
It is 14:20
October 8th
如果失败则如下:
月份检测系统出错
或
当天检测系统出错。
实际打印出来的内容:
It is 14:20
There was an error in the day detecting system.
October None
There was an error in the month detecting system.
【问题讨论】:
-
将多个
if语句一个接一个地放置并不像您想的那样。 -
您已经使用了
strftime,那么为什么不使用它来构建整个字符串呢?time.strftime("%B %#d");→ “10 月 8 日”。 (在非 Windows 系统上是time.strftime("%B %-d");) -
唯一需要特殊处理的是“st, nd, rd, th”,参见stackoverflow.com/q/5891555/476。其余的可以完全使用正确的
strftime格式化字符串来完成。你应该使用像 babel 这样的本地化库,其中也包括“st, nd, rd, th” 处理…… -
我同意 deceze 留下的注释,该链接的方法应该比链接 if 语句更容易处理
标签: python