Python 日期时间、时间Delta、Strftime(Format) 示例

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

日期时间类 Python 分为5个主要类别。

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

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

第一步)在运行日期时间格式的代码之前 Python,导入 Python 日期时间模块,如下面的屏幕截图所示。

使用日期和日期时间类

这些导入语句是 Python 该库可让您操作日期和时间,而无需编写任何代码。

在执行之前请考虑以下几点 Python 日期时间格式代码

from datetime import date

这句话告诉 Python 解释器从 datetime 模块导入日期类 Python。我们没有为这个日期功能编写代码,只是将其导入供我们使用

第一步)接下来,我们创建一个日期对象的实例。

使用日期和日期时间类

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

使用日期和日期时间类

输出符合预期。

使用 date.today() 打印日期

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

让我们看一个例子

使用 date.today() 打印日期

今日工作日号码

date.today() 函数还可以提供星期几。以下是星期几表,以 Monday 为 0,星期日为 6

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

星期数对于索引取决于星期几的数组很有用。

使用 date.today() 打印日期

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

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

Python 当前日期和时间

当我们执行日期时间的代码时,它会给出当前日期和时间的输出。

步骤2) 使用“DATETIME OBJECT”,还可以调用时间类。

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

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

这会给我足够的时间。让我们运行这个程序。

Python 当前日期和时间

好的,你可以看到我在这里得到了日期和时间。然后下一行,我得到了时间本身

步骤3) 我们将工作日索引器应用到工作日的数组列表中,以了解今天是哪一天

  • 工作日运算符 (wd) 被分配一个 (0-6) 的数字,具体取决于当前工作日是哪天。这里我们声明了日期列表的数组(星期一、星期二、星期三……星期日)。
  • 使用该索引值可以知道是哪一天。在我们的例子中,它是 #2,代表星期三,因此在输出中它将打印出“哪一天是星期三”。

Python 当前日期和时间

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

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。我们将更进一步学习如何使用格式化函数来格式化时间和日期。

步骤1) 首先我们来看看如何格式化年份的简单步骤。举个例子会更容易理解。

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

  • 我们使用了“strftime 函数” 用于格式化。
  • 该函数使用不同的 控制码 给出输出。
  • 每个控制代码类似于不同的参数,如年、月、星期几和日期 [(%y/%Y – 年), (%a/%A- 星期几), (%b/%B- 月份), (%d – 月份中的某一天)]。
  • 在我们的例子中, (“%Y”) 与年份类似,它打印出带世纪的完整年份(例如,2018 年)。

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

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

步骤3) Strf 函数可以分别声明日期、日、月和年。此外,只需对 strftime 函数中的控制代码进行微小更改,您就可以格式化文本的样式。

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

在 strftime 函数中,如果将 (%a) 替换为大写 A,即 (%A),则输出将打印为“Firday”,而不仅仅是缩写“Fri”。

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

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

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

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

在输出中,你可以看到预期的结果

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

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

只需定义控制代码,如 %I/H 表示小时、%M 表示分钟、%S 表示秒,就可以调用不同格式的时间

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

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

以下是将日期时间转换为字符串对象的完整代码。

#
#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()

Timedelta 是什么 Python?

时间增量 Python 是一个表示持续时间的对象。它主要用于计算两个日期和时间之间的持续时间。它还用于检索具有某些增量日期和时间的对象。timedelta 对象支持数学运算,如加法、减法、乘法、除法等。

如何使用 Timedelta 对象

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

请记住,此功能不是用于打印时间或日期,而是用于计算未来或过去.让我们看看 Python timedelta 示例以便更好地理解它。

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

Timedelta 对象

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

困惑吗?下一步会有所帮助-

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

Timedelta 对象

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

Timedelta 对象

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

Timedelta 对象

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

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

Timedelta 对象

输出结果显示“元旦已经过去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 模块提供了不同的类或类别,例如

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

使用日期时间对象

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

使用“str f time function”格式化超时

  • 使用“str f 时间函数”更改年份的格式
  • 分别打印日期、月份和年份,
  • 呼叫时间为任意格式 12 小时或 24 小时

Timedelta 对象

  • 使用 timedelta 对象,你可以估计未来和过去的时间
  • 计算从当前时间到特殊日子(生日)还剩多少天
  • 计算从当前时间到特殊日子(生日)的总天数