Python'da tarih saat geçerli yıl ve ay


99

Tarih saat içinde cari yıl ve ayı bilmeliyim.

Bunu kullanıyorum:

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

Belki başka bir yolu var mı?


demek date.today().strftime("%Y-%m")istiyorsun
00schneider

Yanıtlar:


124

Kullanım:

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

Ayın ilkini istediğinizi varsayıyorum.


2
@ user3778327: todaydeğişken zaten geçerli yıl ve ayı içeriyor .
jfs

19
Bu çözüm için from datetime import datetimebasitçe kullanmak yerine kullandığınızdan emin olunimport datetime
jpobst

Ben Python 3.8.1 ve zope.interface-4.7.1 tarih saat-4.3 ve (yukarıda kod kullanıyorum @jpobst ithalat datetime ) benim için çalışıyor. Ben yazarsam datetime ithalat datetime gelen , bana atar tip nesne 'datetime.datetime' hayır özelliği 'ni tarih saat' vardır: AttributeError
jeppoo1

138

Bu çözümü deneyin:

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
Çalışıyor, teşekkürler! Diğer cevaplarda kullanılana .now()göre bir avantajı var mı .today()? now()İşlevi daha yaygın kullanılır, daha kısadır ... ama hepsi bir olduğunu bilmek istiyor getirildiğinde birbirinin üzerine kullanmak için herhangi bir neden yoktur o hangi yıldayız?
Luc

1
@hashlash Teşekkürler! Başkalarını kurtarmak için bir tıklama: hayır, gerçekten değil
Luc

ne from datetimeişe yarar ve neden buna ihtiyacın var?
Cadoiz

1
@Cadoiz - datetime paketinin birkaç alt modülü vardır - yalnızca tarihlerle ilgilenen datealt modül ( from datetime import date) time, zamanlarla ilgilenen datetimealt modül ve her ikisini de yapan ne yazık ki adlandırılmış alt modül. Da var timedeltave tzinfoiçeride. Biri import datetimetüm alt modülleri içeren tüm paketi alabilir, ancak daha sonra yöntem çağrıları datetime.datetime.now()veya gibi görünür datetime.date.today(). Tipik olarak, birkaç nedenden dolayı yalnızca ihtiyacınız olan bileşenleri içe aktarmak daha iyidir.
dannysauer

69

Kullanım:

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

Referans: 8.1.7. strftime () ve strptime () Davranışı

Başvuru: strftime () ve strptime () Davranışı

Yukarıdaki şeyler, yalnızca şimdi veya bugün değil, herhangi bir tarih ayrıştırması için kullanışlıdır. Herhangi bir tarih ayrıştırması için yararlı olabilir.

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

Ve bunun gibi...



7

Her zaman bir alt dize yöntemi kullanabilirsiniz:

import datetime;

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

Bu size mevcut ayı ve yılı tamsayı formatında alacaktır. Bunların dizge olmasını istiyorsanız, değişkenlere değer atarken "int" önceliğini kaldırmanız yeterlidir curr_yearve curr_month.


5
Bu kötü. Neden onu yayınlamak ve sonra bir dizi manipülasyonu yapmak gerekiyor? datetime.datetime.now().monthdaha iyi.
Ahmed

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

5

Geç cevap, ancak şunları da kullanabilirsiniz:

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

1
Geç, ama yanlış değil ve hatta datetime kullanmaktan daha açık. Teşekkürler :).
ivanleoncz

0

Soru, özellikle tarih saati kullanmayı ister.

Bu, yalnızca tarih saati kullanan bir yoldur:

year = datetime.now().year
month = datetime.now().month
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.