Tanggal waktu tahun dan bulan saat ini dengan Python

90

Saya harus memiliki tahun dan bulan saat ini di datetime.

Saya menggunakan ini:

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

Apakah mungkin ada cara lain?

pengguna3778327
sumber
maksudmu date.today().strftime("%Y-%m")?
00schneider

Jawaban:

114

Menggunakan:

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

Saya berasumsi Anda menginginkan yang pertama bulan ini.

llogiq
sumber
1
@ user3778327: todayvariabel sudah memiliki tahun dan bulan ini.
jfs
18
Untuk solusi ini, pastikan untuk menggunakan from datetime import datetimedaripada hanyaimport datetime
jpobst
@jpobst Saya menggunakan Python 3.8.1 & datetime-4.3 zope.interface-4.7.1, dan kode di atas (dengan import datetime ) berfungsi untuk saya. Jika saya menulis dari datetime impor datetime , itu melempar saya AttributeError: type object 'datetime.datetime' tidak memiliki atribut 'datetime'
jeppoo1
128

Coba solusi ini:

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
Gaurav Dave
sumber
1
Bekerja, terima kasih! Apakah ada keuntungan lebih .now()daripada yang .today()digunakan dalam jawaban lain? The now()fungsi yang lebih pendek, itu lebih umum digunakan ... tapi apakah ada alasan untuk menggunakan satu atas yang lain ketika semua orang ingin tahu adalah apa tahun itu?
Luc
1
@hashlash Terima kasih! Untuk menyelamatkan orang lain, klik: tidak, tidak juga
Luc
apa yang from datetimedilakukan dan mengapa Anda membutuhkannya?
Cadoiz
1
@Cadoiz - Paket datetime memiliki beberapa submodul - datesubmodule ( from datetime import date) yang hanya berhubungan dengan tanggal, timesubmodule yang berhubungan dengan waktu, dan datetimesubmodule sayangnya bernama yang melakukan keduanya. Ada juga timedeltadan tzinfodi sana. Seseorang bisa saja import datetimemendapatkan seluruh paket dengan semua submodul, tetapi kemudian panggilan metode akan terlihat seperti datetime.datetime.now()atau datetime.date.today(). Biasanya, lebih baik karena beberapa alasan untuk hanya mengimpor komponen yang Anda butuhkan.
dannysauer
68

Menggunakan:

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).

Referensi: 8.1.7. strftime () dan strptime () Behavior

Referensi: strftime () dan strptime () Behavior

Hal-hal di atas berguna untuk penguraian tanggal apa pun, tidak hanya sekarang atau hari ini. Ini dapat berguna untuk penguraian tanggal apa pun.

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')

Dan seterusnya...

Anup Yadav
sumber
8

Anda dapat menulis jawaban yang diterima sebagai satu baris menggunakan date.replace:

datem = datetime.today().replace(day=1)
Fisikawan Gila
sumber
6

Anda selalu dapat menggunakan metode sub-string:

import datetime;

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

Ini akan memberi Anda bulan dan tahun saat ini dalam format integer. Jika Anda ingin mereka menjadi string, Anda hanya perlu menghapus prioritas "int" sambil menetapkan nilai ke variabel curr_yeardan curr_month.

Jaymeen_JK
sumber
5
Ini buruk. Kenapa perlu cast itu lalu melakukan manipulasi string? datetime.datetime.now().monthlebih baik.
Ahmed
5
>>> from datetime import date
>>> date.today().month
2
>>> date.today().year
2020
>>> date.today().day
13
sanfirat
sumber
5

Jawaban terlambat, tetapi Anda juga dapat menggunakan:

import time
ym = time.strftime("%Y-%m")
Pedro Lobito
sumber
1
Terlambat, tapi tidak salah, dan bahkan jelas daripada menggunakan datetime. Terima kasih :).
ivanleoncz