ฉันจะรับชื่อเดือนจากหมายเลขเดือนได้อย่างไร
ตัวอย่างเช่นถ้าฉัน3
ฉันต้องการกลับmarch
date.tm_month()
วิธีการรับสายmarch
?
ฉันจะรับชื่อเดือนจากหมายเลขเดือนได้อย่างไร
ตัวอย่างเช่นถ้าฉัน3
ฉันต้องการกลับmarch
date.tm_month()
วิธีการรับสายmarch
?
คำตอบ:
จากนั้นคุณจะเห็นว่าcalendar.month_name[3]
จะส่งคืนMarch
และดัชนีอาร์เรย์ของ0
เป็นสตริงว่างดังนั้นไม่จำเป็นต้องกังวลเกี่ยวกับการทำดัชนีศูนย์
import datetime
mydate = datetime.datetime.now()
mydate.strftime("%B")
คืนค่า: ธันวาคม
ข้อมูลเพิ่มเติมบางส่วนเกี่ยวกับเว็บไซต์ Python doc
[แก้ไข: ความคิดเห็นที่ดีจาก @GiriB] นอกจากนี้คุณยังสามารถใช้%b
ซึ่งส่งกลับสัญกรณ์สั้น ๆ สำหรับชื่อเดือน
mydate.strftime("%b")
Dec
ตัวอย่างข้างต้นก็จะกลับมา
mydate.strftime("%b")
ส่งคืนสัญกรณ์สั้น ๆ สำหรับชื่อเดือน (สำหรับตัวอย่างข้างต้นมันจะกลับมาDec
)
import datetime
monthinteger = 4
month = datetime.date(1900, monthinteger, 1).strftime('%B')
print month
เมษายน
ไม่เป็นประโยชน์หากคุณต้องการทราบชื่อเดือนสำหรับหมายเลขที่ระบุ (1 - 12) เนื่องจากวันปัจจุบันไม่สำคัญ
calendar.month_name[i]
หรือ
calendar.month_abbr[i]
มีประโยชน์มากกว่าที่นี่
นี่คือตัวอย่าง:
import calendar
for month_idx in range(1, 13):
print (calendar.month_name[month_idx])
print (calendar.month_abbr[month_idx])
print ("")
ตัวอย่างผลลัพธ์:
January
Jan
February
Feb
March
Mar
...
month_name
และmonth_abbr
range(1, 13)
ในตัวอย่างของคุณเพื่อให้คุณได้รับผลงานทั้งหมด 12 เดือน
import datetime
mydate = datetime.datetime.now()
mydate.strftime("%B") # 'December'
mydate.strftime("%b") # 'dec'
ฉันจะเสนอสิ่งนี้ในกรณี (เช่นฉัน) คุณมีคอลัมน์ตัวเลขเดือนในดาต้าเฟรม:
df['monthName'] = df['monthNumer'].apply(lambda x: calendar.month_name[x])
นี่คือสิ่งที่ฉันจะทำ:
from datetime import *
months = ["Unknown",
"January",
"Febuary",
"March",
"April",
"May",
"June",
"July",
"August",
"September",
"October",
"November",
"December"]
now = (datetime.now())
year = (now.year)
month = (months[now.month])
print(month)
มันเอาท์พุท:
>>> September
(นี่คือวันที่แท้จริงเมื่อฉันเขียนสิ่งนี้)
คำตอบที่ดี บางคำใช้ประโยชน์จากปฏิทินอยู่แล้วแต่ยังไม่ได้กล่าวถึงผลของการตั้งค่าภาษา
ตัวอย่างเช่นในภาษาฝรั่งเศส:
import locale
import calendar
locale.setlocale(locale.LC_ALL, 'fr_FR')
assert calendar.month_name[1] == 'janvier'
assert calendar.month_abbr[1] == 'jan'
หากคุณวางแผนที่จะใช้setlocale
ในรหัสของคุณตรวจสอบให้แน่ใจว่าได้อ่านเคล็ดลับและข้อควรระวังและส่วนของตัวเขียนส่วนขยายจากเอกสารประกอบ ตัวอย่างที่แสดงที่นี่ไม่ได้เป็นตัวแทนของวิธีการใช้งาน โดยเฉพาะจากสองส่วนเหล่านี้:
โดยทั่วไปเป็นความคิดที่ดีที่จะเรียก setlocale () ในรูทีนไลบรารี่บางอันเนื่องจากผลข้างเคียงที่มีผลกระทบต่อโปรแกรมทั้งหมด [... ]
โมดูลส่วนขยายไม่ควรเรียก setlocale () […]
calendar
ฉันแค่อยากจะเน้นวิธีการตั้งค่าสถานที่เกิดเหตุนอกจากนี้ยังส่งผลกระทบต่อค่าจาก ฉันอาจจะปรับปรุงข้อความ
สำหรับช่วง Arbitay ของตัวเลขเดือน
month_integer=range(0,100)
map(lambda x: calendar.month_name[x%12+start],month_integer)
จะให้รายการที่ถูกต้อง ปรับstart
พารามิเตอร์จากตำแหน่งที่มกราคมเริ่มในรายการเดือนจำนวนเต็ม
8.1 วันที่และเวลา - ประเภทวันที่และเวลาพื้นฐาน - เอกสาร Python 2.7.17 https://docs.python.org/2/library/datetime.html#strftime-strptime-behavior
รายการข้อโต้แย้ง strftime ทั้งหมด ชื่อของเดือนและสิ่งที่ดีเช่นการจัดรูปแบบการเติมด้านซ้ายเป็นศูนย์ อ่านหน้าเต็มสำหรับสิ่งต่าง ๆ เช่นกฎสำหรับข้อโต้แย้ง "ไร้เดียงสา" นี่คือรายการโดยย่อ:% a Sun, Mon, …, Sat
% วันอาทิตย์วันจันทร์…วันเสาร์
% w วันทำงานเป็นตัวเลขโดยที่ 0 คือวันอาทิตย์
% d วันที่เดือน 01, 02, …, 31
% b ม.ค. , ก.พ. , …, ธ.ค.
% B มกราคม, กุมภาพันธ์, …, ธันวาคม
% m จำนวนเดือนในรูปแบบ zero-padded 01, 02, …, 12
% y 2 หลักปีศูนย์ zero-padded 00, 01, …, 99
% Y 4 หลักปี 1970, 1988, 2001, 2013
% H ชั่วโมง (นาฬิกา 24 ชั่วโมง) zero-padded 00, 01, …, 23
% I Hour (นาฬิกา 12 ชั่วโมง) zero-padded 01, 02, …, 12
% p AM หรือ PM
% M นาที zero-padded 00, 01, …, 59
% S แผ่นที่สองเป็นศูนย์ 00, 01, …, 59
% f Microsecond zero-padded 000000, 000001, …, 999999
% z UTC ชดเชยในรูปแบบ + HHMM หรือ -HHMM +0000, -0400, +1030
% Z ชื่อโซนเวลา UTC, EST, CST
% j วันที่ไม่มีการเสริมเบาะในปี 001, 002, …, 366
จำนวน% U สัปดาห์ของปีศูนย์เต็มจำนวนวันก่อนวันอาทิตย์แรกคือสัปดาห์ที่ 0
จำนวน% W สัปดาห์ของปี (วันจันทร์เป็นวันแรก)
การแสดงวันที่และเวลาของ% c สถานที่ อังคาร 16 ส.ค. 21:30:00 น
การแสดงวันที่ของ% x สถานที่ 08/16/1988 (en_US)
การแสดงเวลาของ% X Locale 21:30:00
อักขระ %% ตามตัวอักษร '%'
ฉันสร้างฟังก์ชั่นของตัวเองเพื่อแปลงตัวเลขเป็นเดือนที่สอดคล้องกัน
def month_name (number):
if number == 1:
return "January"
elif number == 2:
return "February"
elif number == 3:
return "March"
elif number == 4:
return "April"
elif number == 5:
return "May"
elif number == 6:
return "June"
elif number == 7:
return "July"
elif number == 8:
return "August"
elif number == 9:
return "September"
elif number == 10:
return "October"
elif number == 11:
return "November"
elif number == 12:
return "December"
จากนั้นฉันสามารถเรียกใช้ฟังก์ชัน ตัวอย่างเช่น:
print (month_name (12))
ขาออก:
>>> December
calendar
โมดูลในตัว อาจมีประโยชน์อะไรบ้างในการสร้างฟังก์ชั่นของคุณเองเพื่อทำซ้ำผลลัพธ์เดียวกัน นอกจากนี้พจนานุกรมจะเร็วกว่าชุดคำสั่ง elif มาก