Python DateTime、TimeDelta、Strftime(格式)及示例

在Python中,date、time和datetime类提供了许多函数来处理日期、时间和时间间隔。Python中的日期和datetime是对象,因此在操作它们时,您实际上是在操作对象,而不是字符串或时间戳。在操作日期或时间时,需要导入datetime函数。

Python中的datetime类主要分为5个类。

  • date – 仅处理日期(月、日、年)
  • time – 与日期无关的时间(时、分、秒、微秒)
  • datetime – 日期和时间的组合(月、日、年、时、分、秒、微秒)
  • timedelta— 用于操作日期的时长
  • tzinfo— 处理时区的抽象类

如何使用日期和日期时间类

步骤1) 在运行Python中的datetime格式代码之前,重要的是导入Python日期时间模块,如下图所示。

Use Date & DateTime Class

这些导入语句是Python库中预定义的函数集,让您无需编写任何代码即可处理日期和时间。

在执行Python datetime格式代码之前,请考虑以下几点

from datetime import date

这一行告诉Python解释器从Python的datetime模块中导入date类。我们没有为这个日期功能编写代码,只是为了使用而导入它

步骤2) 接下来,我们创建一个date对象实例。

Use Date & DateTime Class

步骤3) 接下来,我们打印日期并运行代码。

Use Date & DateTime Class

输出如预期。

使用date.today()打印日期

date.today函数有几个相关的属性。我们可以打印单独的日/月/年以及其他许多东西

让我们看一个例子

Print Date using date.today()

今天的星期几数字

date.today()函数也提供星期几的数字。这是星期表,从星期一开始,数字为0,星期日为6

日期 星期几数字
Monday 0
星期二 1
星期三 2
星期四 3
星期五 4
星期六 5
星期日 6

Weekday Number对于索引依赖于星期几的数组很有用。

Print Date using date.today()

Python当前日期和时间:now() today()

步骤1) 就像日期对象一样,我们也可以在Python中使用“日期时间对象”。Python的日期和时间对象以时、分、秒和毫秒提供日期和时间。

Python Current Date and Time

当我们执行datetime的代码时,它会显示当前日期和时间。

步骤2) 使用“日期时间对象”,您也可以调用time类。

假设我们只想打印当前时间,而不显示日期。

t = datetime.time(datetime.now())
  • 我们已经导入了time类。我们将使用datetime.now()将其分配为当前时间值
  • 我们将当前时间的值赋给变量t。

这将只给我时间。所以让我们运行这个程序。

Python Current Date and Time

好的,您可以看到这里有日期和时间。然后下一行,我只得到了时间

步骤3) 我们将把星期几索引器应用于我们的星期几数组列表,以了解今天是星期几

  • Weekday operator (wd) 被赋给一个数字(0-6),该数字取决于当前是星期几。这里我们声明了星期一、星期二、星期三……星期日的列表数组。
  • 使用该索引值来确定今天是星期几。在我们的例子中,它是#2,代表星期三,所以输出将显示“今天是星期三”。

Python Current Date and Time

这是使用datetime now获取当前日期和时间的完整代码

from datetime import date
from datetime import time
from datetime import datetime
def main():
    ##DATETIME OBJECTS
    #Get today's date from datetime class
    today=datetime.now()
    #print (today)
    # Get the current time
    #t = datetime.time(datetime.now())
    #print "The current time is", t
    #weekday returns 0 (monday) through 6 (sunday)
    wd=date.weekday(today)
    #Days start at 0 for monday
    days= ["monday","tuesday","wednesday","thursday","friday","saturday","sunday"]
    print("Today is day number %d" % wd)
    print("which is a " + days[wd])

if __name__== "__main__":
    main()

如何使用Strftime()格式化日期和时间输出

到目前为止,我们已经学习了如何在Python中使用datetime和date 对象。我们将更进一步,学习如何使用格式化函数来格式化日期和时间。

步骤1) 首先,我们将看到一个简单的格式化年份的步骤。最好通过示例来理解。

Format Date and Time Output with Strftime()

  • 我们使用了“strftime函数”进行格式化。
  • 此函数使用不同的控件代码来输出。
  • 每个控件代码都代表不同的参数,如年、月、星期和日期[(%y/%Y – 年), (%a/%A- 星期), (%b/%B- 月), (%d – 月中的日期)]
  • 在我们的例子中,它是(“%Y”),代表年份,它会显示完整的年份(例如,2018)。

步骤2) 现在,如果您将(“%Y”)替换为小写,即(“%y”)并执行代码,输出将只显示(18),而不是(2018)。年份的世纪将不会显示,如下图所示

Format Date and Time Output with Strftime()

步骤3) Strf函数可以单独声明日期、星期、月份和年份。此外,通过对strftime函数中的控件代码进行少量更改,您可以格式化文本样式。

Format Date and Time Output with Strftime()

在strftime函数中,如果您将(%a)替换为大写A,即(%A),输出将显示为“星期五”,而不是缩写“周五”。

Format Date and Time Output with Strftime()

步骤4) 借助“Strftime”函数,我们还可以检索本地系统时间、日期或两者。

  1. %C-表示本地日期和时间
  2. %x-表示本地日期
  3. %X-表示本地时间

Format Date and Time Output with Strftime()

在输出中,您可以看到结果如预期

步骤5) “strftime函数”允许您以任何格式(24小时制或12小时制)调用时间。

Format Date and Time Output with Strftime()

只需定义%I/%H(小时)、%M(分钟)、%S(秒)等控件代码,就可以调用不同格式的时间

12小时时间声明为[print now.strftime(“%I:%M:%S %p)]

24小时时间声明为[print now.strftime(“%H:%M”)]

这是将datetime转换为String对象的完整代码

#
#Example file for formatting time and date output
#
from datetime import datetime
def main():
   #Times and dates can be formatted using a set of predefined string
   #Control codes
      now= datetime.now() #get the current date and time
      #%c - local date and time, %x-local's date, %X- local's time
      print(now.strftime("%c"))
      print(now.strftime("%x"))
      print(now.strftime("%X"))
##### Time Formatting ####
      #%I/%H - 12/24 Hour, %M - minute, %S - second, %p - local's AM/PM
      print(now.strftime("%I:%M:%S %p")) # 12-Hour:Minute:Second:AM
      print(now.strftime("%H:%M")) # 24-Hour:Minute

if __name__== "__main__":
    main()

Python中的Timedelta是什么?

Python中的Timedelta是一个表示持续时间的对象。它主要用于计算两个日期和时间之间的持续时间。它也用于检索带有某些时间差的日期和时间的对象。timedelta对象支持加法、减法、乘法、除法等数学运算。

如何使用Timedelta对象

使用Python timedelta对象,您可以估算未来和过去的时间。换句话说,它是一个时间跨度,用于预测任何特殊的日子、日期或时间。

请记住,此函数不是用于打印时间或日期的,而是用于计算未来或过去的事情。让我们看一个Python timedelta示例来更好地理解它。

步骤1) 要运行Timedelta对象,您需要先声明导入语句,然后执行代码

Timedelta Objects

  1. 编写timedelta的导入语句
  2. 现在编写代码以打印timedelta对象,如屏幕截图所示
  3. 运行代码。timedelta表示365天、8小时15分钟的时间跨度,并打印相同内容

令人困惑?下一步会帮助您-

步骤2) 让我们获取今天的日期和时间,以检查我们的导入语句是否正常工作。当代码执行时,它会打印今天的日期,这意味着我们的导入语句工作正常

Timedelta Objects

步骤3) 我们将看到如何通过delta对象检索一年后的日期。当我们运行代码时,它会如期给出输出。

Timedelta Objects

步骤4) 另一个如何使用时间差来计算当前日期和时间的未来日期的示例

Timedelta Objects

步骤5) 让我们看一个更复杂的例子。我想确定距离新年已经过去了多少天。我们将按以下方式进行

  • 使用today= date.today(),我们将获得今天的日期
  • 我们知道新年总是在1月1日,但年份可能不同。使用nyd= date(today.year,1,1),我们将新年存储在变量nyd中
  • if nyd < today: 比较当前日期是否大于新年。如果是,则进入while循环
  • ((today-nyd).days)给出当前日期和新年之间的天数差异

Timedelta Objects

输出显示“新年已经过去11天了。”

这是完整的代码

#
# Example file for working with timedelta objects
#
from datetime import date
from datetime import time
from datetime import datetime
from datetime import timedelta

# construct a basic timedelta and print it
print (timedelta(days=365, hours=8, minutes=15))
# print today's date
print ("today is: " + str(datetime.now()))
# print today's date one year from now
print ("one year from now it will be:" + str(datetime.now() + timedelta(days=365)))
# create a timedelta that uses more than one argument
# print (in one week and 4 days it will be " + str(datetime.now() + timedelta(weeks=1, days=4)))
# How many days until New Year's Day?
today = date.today()  # get todays date
nyd = date(today.year, 1, 1)  # get New Year Day for the same year
# use date comparison to see if New Year Day has already gone for this year
# if it has, use the replace() function to get the date for next year
if nyd < today:
    print ("New Year day is already went by %d days ago" % ((today - nyd).days))

Python 2 示例

from datetime import date
from datetime import time
from datetime import datetime
def main():
 	##DATETIME OBJECTS
    #Get today's date from datetime class
	today=datetime.now()
	#print today
	# Get the current time
	#t = datetime.time(datetime.now())
	#print "The current time is", t
	#weekday returns 0 (monday) through 6 (sunday)
        wd = date.weekday(today)
	#Days start at 0 for monday
        days= ["monday","tuesday","wednesday","thursday","friday","saturday","sunday"]
        print "Today is day number %d" % wd
        print "which is a " + days[wd]

if __name__== "__main__":
    main()
#
#Example file for formatting time and date output
#
from datetime import datetime
def main():
   #Times and dates can be formatted using a set of predefined string
   #Control codes
      now= datetime.now() #get the current date and time
      #%c - local date and time, %x-local's date, %X- local's time
      print now.strftime("%c")
      print now.strftime("%x")
      print now.strftime("%X")
##### Time Formatting ####   
      #%I/%H - 12/24 Hour, %M - minute, %S - second, %p - local's AM/PM
      print now.strftime("%I:%M:%S %p") # 12-Hour:Minute:Second:AM
      print now.strftime("%H:%M") # 24-Hour:Minute   

if __name__== "__main__":
    main()
#
# Example file for working with timedelta objects
#
from datetime import date
from datetime import time
from datetime import datetime
from datetime import timedelta

# construct a basic timedelta and print it
print timedelta(days=365, hours=8, minutes=15)
# print today's date
print "today is: " + str(datetime.now())
# print today's date one year from now
print "one year from now it will be:" + str(datetime.now() + timedelta(days=365))
# create a timedelta that uses more than one argument
# print "in one week and 4 days it will be " + str(datetime.now() + timedelta(weeks=1, days=4))
# How many days until New Year's Day?
today = date.today()  # get todays date
nyd = date(today.year, 1, 1)  # get New Year Day for the same year
# use date comparison to see if New Year Day has already gone for this year
# if it has, use the replace() function to get the date for next year
if nyd < today:
    print "New Year day is already went by %d days ago" % ((today - nyd).days)

摘要

为了简单和复杂地操作日期和时间,datetime模块提供了不同的类或类别,例如

  • date – 仅处理日期(月、日、年)
  • time – 与日期无关的时间(时、分、秒、微秒)
  • datetime – 日期和时间的组合(月、日、年、时、分、秒、微秒)
  • timedelta— 用于操作日期的时长
  • tzinfo— 处理时区的抽象类

使用datetime对象

  • 在执行代码之前导入datetime对象是强制性的
  • 使用date.today函数打印单独的日期/月份/年份以及索引星期几
  • 使用date.time对象以小时、分钟、秒和毫秒获取时间

使用“str f time函数”格式化时间输出

  • 使用“str f time函数”来更改年份的格式
  • 分别打印日、日期、月和年,
  • 按任何格式(12小时制或24小时制)调用时间

Timedelta对象

  • 使用timedelta对象,您可以估算未来和过去的时间
  • 计算从当前时间到特殊日期(生日)的总剩余天数
  • 计算从当前时间到特殊日期(生日)的总已过天数