Ngày giờ năm và tháng hiện tại bằng Python


90

Tôi phải có năm và tháng hiện tại trong datetime.

Tôi sử dụng cái này:

datem = datetime.today().strftime("%Y-%m")
datem = datetime.strptime(datem, "%Y-%m")

Có thể có một cách khác?


Ý anh là date.today().strftime("%Y-%m")?
00schneider

Câu trả lời:


114

Sử dụng:

from datetime import datetime
today = datetime.today()
datem = datetime(today.year, today.month, 1)

Tôi giả sử bạn muốn cái đầu tiên của tháng.


1
@ user3778327: todaybiến đã có năm và tháng hiện tại.
jfs

18
Đối với giải pháp này, hãy chắc chắn để sử dụng from datetime import datetimechứ không phải là đơn giảnimport datetime
jpobst

@jpobst Tôi đang sử dụng Python 3.8.1 & datetime-4.3 zope.interface-4.7.1 và đoạn mã trên (với datetime nhập ) phù hợp với tôi. Nếu tôi viết từ datetime nhập datetime , nó ném cho tôi Lỗi thuộc tính: nhập đối tượng 'datetime.datetime' không có thuộc tính 'datetime'
jeppoo1

128

Hãy thử giải pháp này:

from datetime import datetime

currentSecond= datetime.now().second
currentMinute = datetime.now().minute
currentHour = datetime.now().hour

currentDay = datetime.now().day
currentMonth = datetime.now().month
currentYear = datetime.now().year

1
Hoạt động, cảm ơn! Có một lợi thế .now()hơn .today()là được sử dụng trong các câu trả lời khác? Các now()chức năng là ngắn hơn, nó thường được sử dụng ... nhưng là có lý do nào để sử dụng một trong khác khi tất cả ai muốn biết là nó là năm nào?
Luc

1
@hashlash Cảm ơn! Để lưu những người khác một nhấp chuột: không có, không thực sự
Lục

những gì from datetimelàm và tại sao bạn cần nó?
Cadoiz

1
@Cadoiz - Gói datetime có một vài mô-đun con - datemô-đun con ( from datetime import date) chỉ xử lý ngày tháng, timemô-đun con xử lý thời gian và mô- datetimeđun con có tên không may thực hiện cả hai. Cũng có timedeltatzinfotrong đó. Người ta có thể chỉ import datetimelấy toàn bộ gói với tất cả các mô-đun con, nhưng sau đó các lệnh gọi phương thức sẽ giống như datetime.datetime.now()hoặc datetime.date.today(). Thông thường, nó đẹp hơn vì một số lý do để chỉ nhập các thành phần bạn cần.
dannysauer

68

Sử dụng:

from datetime import datetime

current_month = datetime.now().strftime('%m') // 02 //This is 0 padded
current_month_text = datetime.now().strftime('%h') // Feb
current_month_text = datetime.now().strftime('%B') // February

current_day = datetime.now().strftime('%d')   // 23 //This is also padded
current_day_text = datetime.now().strftime('%a')  // Fri
current_day_full_text = datetime.now().strftime('%A')  // Friday

current_weekday_day_of_today = datetime.now().strftime('%w') //5  Where 0 is Sunday and 6 is Saturday.

current_year_full = datetime.now().strftime('%Y')  // 2018
current_year_short = datetime.now().strftime('%y')  // 18 without century

current_second= datetime.now().strftime('%S') //53
current_minute = datetime.now().strftime('%M') //38
current_hour = datetime.now().strftime('%H') //16 like 4pm
current_hour = datetime.now().strftime('%I') // 04 pm

current_hour_am_pm = datetime.now().strftime('%p') // 4 pm

current_microseconds = datetime.now().strftime('%f') // 623596 Rarely we need.

current_timzone = datetime.now().strftime('%Z') // UTC, EST, CST etc. (empty string if the object is naive).

Tham khảo: 8.1.7. Hành vi strftime () và strptime ()

Tham khảo: Hành vi strftime () và strptime ()

Những điều trên rất hữu ích cho bất kỳ phân tích ngày tháng nào, không chỉ bây giờ hay ngày hôm nay. Nó có thể hữu ích cho bất kỳ phân tích cú pháp ngày nào.

e.g.
my_date = "23-02-2018 00:00:00"

datetime.strptime(str(my_date),'%d-%m-%Y %H:%M:%S').strftime('%Y-%m-%d %H:%M:%S+00:00')

datetime.strptime(str(my_date),'%d-%m-%Y %H:%M:%S').strftime('%m')

Và như thế...



6

Bạn luôn có thể sử dụng phương thức chuỗi con:

import datetime;

today = str(datetime.date.today());
curr_year = int(today[:4]);
curr_month = int(today[5:7]);

Điều này sẽ cho bạn biết tháng và năm hiện tại ở định dạng số nguyên. Nếu bạn muốn chúng là chuỗi, bạn chỉ cần loại bỏ ưu tiên "int" trong khi gán giá trị cho các biến curr_yearcurr_month.


5
Thật tệ. Tại sao cần ép kiểu sau đó thực hiện thao tác chuỗi? datetime.datetime.now().monthtốt hơn.
Ahmed

5
>>> from datetime import date
>>> date.today().month
2
>>> date.today().year
2020
>>> date.today().day
13

5

Câu trả lời muộn, nhưng bạn cũng có thể sử dụng:

import time
ym = time.strftime("%Y-%m")

1
Muộn, nhưng không sai, và thậm chí rõ ràng hơn so với sử dụng datetime. Cảm ơn :).
ivanleoncz
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.