Python中的日期时间当前年和月


90

我必须有日期时间的当前年份和月份。

我用这个:

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

可能还有另一种方法吗?


你的意思是date.today().strftime("%Y-%m")
00schneider

Answers:


114

使用:

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

我想你想要本月的第一天。


1
@ user3778327:today变量已经具有当前的年份和月份。
jfs

18
对于此解决方案,请确保使用from datetime import datetime而不是简单使用import datetime
jpobst

@jpobst我正在使用Python 3.8.1和datetime-4.3 zope.interface-4.7.1,上面的代码(带有import datetime)对我有用。如果我从datetime import datetime写入,它将抛出我AttributeError:类型对象'datetime.datetime'没有属性'datetime'–
jeppoo1

127

试试这个解决方案:

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
工程,谢谢!与其他答案.now()相比有没有优势.today()呢?该now()函数更短,更常用...但是当所有人都想知道是哪一年
卢克,

1
@hashlash谢谢!要保存其他信息,请点击:不,不是真的
吕克,

这是什么from datetime做的,你为什么需要它?
Cadoiz

1
@Cadoiz-datetime包有几个子模块-仅处理日期的子date模块(from datetime import date),处理时间的time子模块以及不幸的datetime是,这两个子模块都可以处理。还有timedeltatzinfo在那里。一个人可能只想import datetime获取带有所有子模块的整个程序包,但是方法调用看起来像datetime.datetime.now()datetime.date.today()。通常,出于几个原因,最好只导入所需的组件。
dannysauer

68

使用:

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

参考:8.1.7。strftime()和strptime()行为

参考:strftime()和strptime()行为

以上内容对于任何日期解析都是有用的,不仅是现在还是今天。它对于任何日期解析都很有用。

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

等等...



6

您始终可以使用子字符串方法:

import datetime;

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

这将使您获得当前月份和年份的整数格式。如果希望它们成为字符串,则只需在将值分配给变量curr_yearand时删除“ int”优先级curr_month


5
这不好。为什么需要强制转换然后进行字符串处理?datetime.datetime.now().month更好。
艾哈迈德(Ahmed)

5

答案较晚,但您也可以使用:

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

1
晚了,但没有错,甚至比使用datetime还清晰。谢谢 :)。
ivanleoncz,

4
>>> from datetime import date
>>> date.today().month
2
>>> date.today().year
2020
>>> date.today().day
13
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.