展开菜单
首页 精品内容 本月促销 装机必备 Windows PDF教程 macOS软件 IOS软件 Android AI 专题
全部分类

当前位置:

首页 > 编程开发 > 39个 Python Datetime实例,教你掌控时间

39个 Python Datetime实例,教你掌控时间

在日常生活中,我们可以用多种不同的格式来表示日期和时间,例如,7月4日、2022年3月8日、22:00或2022年12月31日23:59:59。它们使用整数和字符串的组合,或者也可以使用浮点数来表示一天、一分钟等等,各种各样的时间表示方式,确实让人眼花缭乱。不过还好,Python有datetime模块,它允许我们轻松地操作表示日期和时间的对象。在今天的文章中,我们将学习以下内容:Python中datetime模块的使用使用Python日期时间函数将字符串

本文目录

    39个 Python Datetime实例,教你掌控时间

    在日常生活中,我们可以用多种不同的格式来表示日期和时间,例如,7 月 4 日、2022 年 3 月 8 日、22:00 或 2022 年 12 月 31 日 23:59:59。它们使用整数和字符串的组合,或者也可以使用浮点数来表示一天、一分钟等等,各种各样的时间表示方式,确实让人眼花缭乱。

    不过还好,Python 有 datetime 模块,它允许我们轻松地操作表示日期和时间的对象。

    39个 Python Datetime实例,教你掌控时间

    在今天的文章中,我们将学习以下内容:

    •  Python 中 datetime 模块的使用
    •  使用 Python 日期时间函数将字符串转换为日期时间对象,反之亦然
    •  从日期时间对象中提取日期和时间
    •  使用时间戳
    •  对日期和时间执行算术运算
    •  使用时区
    •  创建一个倒数计时器来确定距离 2023 年新年还有多长时间

    Let's do it!

    如何在 Python 中使用日期时间

    正如我们之前所看到的,在编程中表示日期和时间是一项非常有挑战的事情。首先,我们必须以标准的、普遍接受的格式来表示它们。幸运的是,国际标准化组织 (ISO) 制定了一个全球标准 ISO 8601,它将与日期和时间相关的对象表示为 YYYY-MM-DD HH:MM:SS,其信息范围从最重要的(年,YYYY)到 最不重要的(秒,SS)。这种格式的每一部分都表示为一个四位数或两位数。

    Python 中的 datetime 模块有 5 个主要类(模块的一部分):

    •  date 操作日期对象
    •  time 操作时间对象
    •  datetime 是日期和时间的组合
    •  timedelta 允许我们使用时间区间
    •  tzinfo 允许我们使用时区

    此外,我们将使用 zoneinfo 模块,它为我们提供了一种处理时区的更加现代的方式,以及 dateutil 包,它包含许多有用的函数来处理日期和时间。

    让我们导入 datetime 模块并创建我们的第一个日期和时间对象:

    # From the datetime module import date
    from datetime import date
    # Create a date object of 2000-02-03
    date(2022, 2, 3)

    Output:

    datetime.date(2022, 2, 3)

    在上面的代码中,我们从模块中导入了日期类,然后创建了 2022 年 2 月 3 日的 datetime.date 对象。需要注意的是,用于创建该对象的数字顺序与 ISO 8061 中的完全相同 (但我们省略了 0 并且只写了一个数字的月份和日期)。

    关于时间的编码都是基于现实的,所以假设我们要创建一个 2000-26-03 的对象:

    # Create a date object of 2000-26-03
    date(2000, 26, 3)

    Output:

    ---------------------------------------------------------------------------
    ValueErrorTraceback (most recent call last)
    Input In [2], in
     1 # Create a date object of 2000-26-03
    ----> 2 date(2000, 26, 3)
    ValueError: month must be in 1..12

    我们得到 ValueError: month must be in 1..12,毫无疑问,日历中没有第 26 个月,抛出异常。

    让我们看看如何创建一个 datetime.time 对象:

    # From the datetime module import time
    from datetime import time
    # Create a time object of 05:35:02
    time(5, 35, 2)

    Output:

    datetime.time(5, 35, 2)

    现在,如果我们想要在一个对象中同时包含日期和时间怎么办?我们应该使用 datetime 类:

    # From the datetime module import datetime
    from datetime import datetime
    # Create a datetime object of 2000-02-03 05:35:02
    datetime(2000, 2, 3, 5, 35, 2)

    Output:

    datetime.datetime(2000, 2, 3, 5, 35, 2)

    不出意外,我们成功创建了 datetime 对象。我们还可以更明确地将关键字参数传递给 datetime 构造函数:

    datetime(year=2000, month=2, day=3, hour=5, minute=35, second=2)

    Output:

    datetime.datetime(2000, 2, 3, 5, 35, 2)

    如果我们只传入三个参数(年、月和日)会怎样,是否会报错呢

    # Create a datetime object of 2000-02-03
    datetime(2000, 2, 3)

    Output:

    datetime.datetime(2000, 2, 3, 0, 0)

    我们可以看到,现在对象中有两个零(分别代表)小时和分钟。同时秒数也被省略了。

    在许多情况下,我们想知道当前的确切时间。可以使用 datetime 类的 now() 方法:

    # Time at the moment
    now = datetime.now()
    now

    Output:

    datetime.datetime(2022, 8, 1, 0, 9, 39, 611254)

    我们得到一个日期时间对象,这里最后一个数字是微秒。

    如果我们只需要今天的日期,我们可以使用 date 类的 today() 方法:

    today = date.today()
    today

    Output:

    datetime.date(2022, 8, 1)

    如果我们只需要时间,就必须访问 datetime.now() 对象的小时、分钟和秒属性,并将它们传递给时间构造函数:

    time(now.hour, now.minute, now.second)

    Output:

    datetime.time(11, 33, 25)

    我们还可以使用 isocalendar() 函数从日期时间对象中提取周数和天数。它将返回一个包含 ISO 年份、周数和工作日数的三项元组:

    # isocalendar() returns a 3-item tuple with ISO year, week number, and weekday number
    now.isocalendar()

    Output:

    datetime.IsoCalendarDate(year=2022, week=7, weekday=1)

    在 ISO 格式中,一周从星期一开始,到星期日结束。一周中的天数由从 1(星期一)到 7(星期日)的数字编码。如果我们想访问这些元组元素之一,需要使用括号表示法:

    # Access week number
    week_number = now.isocalendar()[1]
    week_number

    Output:

    7

    从字符串中提取日期

    在数据科学和一般编程中,我们主要使用以数十种不同格式存储为字符串的日期和时间,具体取决于地区、公司或我们需要的信息粒度。有时,我们需要日期和确切时间,但在其他情况下,我们只需要年份和月份。我们该如何从字符串中提取我们需要的数据,以便将其作为日期时间(日期、时间)对象来操作呢?

    fromisoformat() 和 isoformat()

    我们学习的第一个将日期字符串转换为日期对象的函数是 fromisoformat,我们这样称呼它是因为它使用 ISO 8601 格式(即 YYYY-MM-DD),让我们看一个例子:

    # Convert a date string into a date object
    date.fromisoformat("2022-12-31")

    Output:

    datetime.date(2022, 12, 31)

    ISO 格式也包含时间,但如果我们却不能将它传递给函数:

    date.fromisoformat("2022-12-31 00:00:00")

    Output:

    ---------------------------------------------------------------------------
    ValueErrorTraceback (most recent call last)
    Input In [13], in
    ----> 1 date.fromisoformat("2022-12-31 00:00:00")
    ValueError: Invalid isoformat string: '2022-12-31 00:00:00'

    当然,我们也可以进行逆向运算,将 datetime 对象转换为 ISO 格式的日期字符串,我们应该使用 isoformat():

    # Convert a datetime object into a string in the ISO format
    date(2022, 12, 31).isoformat()

    Output:

    '2022-12-31'

    strptime()

    为了解决上述 ValueError 问题,我们可以使用 strptime() 函数,该函数可以将任意日期/时间字符串转换为日期时间对象。我们的字符串不一定需要遵循 ISO 格式,但我们应该指定字符串的哪一部分代表哪个日期或时间单位(年、小时等)。让我们看一个例子,首先,我们将使用严格的 ISO 格式将字符串转换为日期时间对象:

    # Date as a string
    iso_date = "2022-12-31 23:59:58"
    # ISO format
    iso_format = "%Y-%m-%d %H:%M:%S"
    # Convert the string into a datetime object
    datetime.strptime(iso_date, iso_format)

    Output:

    datetime.datetime(2022, 12, 31, 23, 59, 58)

    在第一行,我们创建一个日期/时间字符串。在第二行中,我们使用特殊代码指定字符串的格式,该代码包含一个百分号,后跟一个编码日期或时间单位的字符。最后,在第三行中,我们使用 strptime() 函数将字符串转换为日期时间对象。这个函数有两个参数:字符串和字符串的格式。

    我们上面使用的代码还可以编码其他日期和时间单位,如工作日、月份名称、周数等。

    代码

    示例

    说明

    %A

    Monday

    完整的工作日名称

    %B

    December

    全月名称

    %W

    2

    周数(星期一为一周的第一天)

    让我们再看几个使用其他格式的示例:

    # European date as a string
    european_date = "31-12-2022"
    # European format
    european_format = "%d-%m-%Y"
    # Convert the string into a datetime object
    datetime.strptime(european_date, european_format)

    Output:

    datetime.datetime(2022, 12, 31, 0, 0)

    如上所示,字符串已成功转换,但还有额外的零表示时间字段,让我们看一个使用其他代码的示例:

    # Full month name date
    full_month_date = "12 September 2022"
    # Full month format
    full_month_format = "%d %B %Y"
    # Convert the string into a datetime object
    datetime.strptime(full_month_date, full_month_format)

    Output:

    datetime.datetime(2022, 9, 12, 0, 0)

    还是可以正常转换,但是需要注意的是,我们定义的格式应该与日期字符串的格式相匹配。因此,如果我们有空格、冒号、连字符或其他字符来分隔时间单位,那么它们也应该在代码字符串中。否则,Python 将抛出 ValueError:

    # Full month name date
    full_month_date = "12 September 2022"
    # Wrong format (missing space)
    full_month_format = "%d%B %Y"
    # Convert the string into a datetime object
    datetime.strptime(full_month_date, full_month_format)

    Output:

    ---------------------------------------------------------------------------
    ValueErrorTraceback (most recent call last)
    Input In [18], in
     5 full_month_format = "%d%B %Y"
     7 # Convert the string into a datetime object
    ----> 8 datetime.strptime(full_month_date, full_month_format)
    File ~/coding/dataquest/articles/using-the-datetime-package/env/lib/python3.10/_strptime.py:568, in _strptime_datetime(cls, data_string, format)
     565 def _strptime_datetime(cls, data_string, format="%a %b %d %H:%M:%S %Y"):
     566 """Return a class cls instance based on the input string and the
     567 format string."""
    --> 568 tt, fraction, gmtoff_fraction = _strptime(data_string, format)
     569 tzname, gmtoff = tt[-2:]
     570 args = tt[:6] + (fraction,)
    File ~/coding/dataquest/articles/using-the-datetime-package/env/lib/python3.10/_strptime.py:349, in _strptime(data_string, format)
     347 found = format_regex.match(data_string)
     348 if not found:
    --> 349 raise ValueError("time data %r does not match format %r" %
     350(data_string, format))
     351 if len(data_string) != found.end():
     352 raise ValueError("unconverted data remains: %s" %
     353 data_string[found.end():])
    ValueError: time data '12 September 2022' does not match format '%d%B %Y'

    可以看到,即使缺少一个空格也可能导致错误!

    将日期时间对象转换为字符串

    strftime()

    在 Python 中,我们还可以使用 strftime() 函数将日期时间对象转换为字符串。它有两个参数:一个日期时间对象和输出字符串的格式。

    # Create a datetime object
    datetime_obj = datetime(2022, 12, 31)
    # American date format
    american_format = "%m-%d-%Y"
    # European format
    european_format = "%d-%m-%Y"
    # American date string
    print(f"American date string: {datetime.strftime(datetime_obj, american_format)}.")
    # European date string
    print(f"European date string: {datetime.strftime(datetime_obj, european_format)}.")

    Output:

    American date string: 12-31-2022.
    European date string: 31-12-2022.

    我们采用相同的日期时间对象并将其转换为两种不同的格式。我们还可以指定其他格式,例如完整的月份名称后跟日期和年份。

    full_month = "%B %d, %Y"
    datetime.strftime(datetime_obj, full_month)

    Output:

    'December 31, 2022'

    另一种使用 strftime 的方法是将它放在 datetime 对象之后:

    datetime_obj = datetime(2022, 12, 31, 23, 59, 59)
    full_datetime = "%B %d, %Y %H:%M:%S"
    datetime_obj.strftime(full_datetime)

    Output:

    'December 31, 2022 23:59:59'

    在实际使用当中,如果我们想提取不同年份 12 月 31 日的工作日名称,strftime() 可能很方便:

    # Extract the weekday name of December 31
    weekday_format = "%A"
    for year in range(2022, 2026):
     print(f"Weekday of December 31, {year} is {date(year, 12, 31).strftime(weekday_format)}.")

    Output:

    Weekday of December 31, 2022 is Saturday.
    Weekday of December 31, 2023 is Sunday.
    Weekday of December 31, 2024 is Tuesday.
    Weekday of December 31, 2025 is Wednesday.

    时间戳

    在编程中,通常会看到以 Unix 时间戳格式存储的日期和时间,这种格式将任何日期表示为数字。一般情况时间戳是从 1970 年 1 月 1 日 00:00:00 UTC(协调世界时)开始的 Unix 纪元经过的秒数。我们可以使用 timestamp() 函数计算这个数字:

    new_year_2023 = datetime(2022, 12, 31)
    datetime.timestamp(new_year_2023)

    Output:

    1672441200.0

    1672441200 就是从 Unix 纪元开始到 2022 年 12 月 31 日之间的秒数。

    我们可以使用 fromtimestamp() 函数执行逆运算:

    datetime.fromtimestamp(1672441200)

    Output:

    datetime.datetime(2022, 12, 31, 0, 0)

    带日期的算术运算

    有时我们可能想要计算两个日期之间的差异或对日期和时间执行其他算术运算。幸运的是,Python 的工具包中有许多工具可以执行此类计算。

    基本算术运算

    我们可以执行的第一个操作是计算两个日期之间的差异。为此,我们使用减号:

    # Instatiate two dates
    first_date = date(2022, 1, 1)
    second_date = date(2022, 12, 31)
    # Difference between two dates
    date_diff = second_date - first_date
    # Function to convert datetime to string
    def dt_string(date, date_format="%B %d, %Y"):
     return date.strftime(date_format)
    print(f"The number of days and hours between {dt_string(first_date)} and {dt_string(second_date)} is {date_diff}.")

    Output:

    The number of days and hours between January 01, 2022 and December 31, 2022 is 364 days, 0:00:00

    让我们看看 first_date - second_date 返回什么类型的对象:

    type(date_diff)

    Output:

    datetime.timedelta

    此对象的类型是 datetime.timedelta,它的名称中有 delta,指的是一个绿色字母 delta,在科学和工程中,描述了一种变化<实际上,这里它代表了时间上的变化(差异)。

    如果我们只对两个日期之间的天数感兴趣怎么办?我们可以访问 timedelta 对象的不同属性,其中之一称为 .days。

    print(f"The number of days between {dt_string(first_date)} and {dt_string(second_date)} is {(date_diff).days}.")

    Output:

    The number of days between January 01, 2022 and December 31, 2022 is 364.

    timedelta() 时间增量

    现在我们知道了 timedelta 对象,是时候介绍 timedelta() 函数了。它允许我们通过加减时间单位(如天、年、周、秒等)对时间对象执行许多算术运算。例如,我们可能想知道从现在起 30 天后是一周中的哪一天。为此,我们必须创建一个表示当前时间的对象和一个定义我们添加到其中的时间量的 timedelta 对象:

    # Import timedelta
    from datetime import timedelta
    # Current time
    now = datetime.now()
    # timedelta of 30 days
    one_month = timedelta(days=30)
    # Day in one month/using dt_string function defined above
    print(f"The day in 30 days is {dt_string(now + one_month)}.")

    Output:

    The day in 30 days is March 16, 2022.

    如果我们查看 timedelta 函数的帮助页面 (help(timedelta)),我们会看到它有以下参数:days=0, seconds=0, microseconds=0, milliseconds=0, minutes=0, hours= 0,周=0。因此我们还可以练习在日期中添加或减去其他时间单位。例如,我们可以计算 2030 年新年前 12 小时的时间:

    # New year 2030
    new_year_2030 = datetime(2030, 1, 1, 0, 0)
    # timedelta of 12 hours
    twelve_hours = timedelta(hours=12)
    # Time string of 12 hours before New Year 2023
    twelve_hours_before = (new_year_2030 - twelve_hours).strftime("%B %d, %Y, %H:%M:%S")
    # Print the time 12 hours before New Year 2023
    print(f"The time twelve hours before New Year 2030 will be {twelve_hours_before}.")

    Output:

    The time twelve hours before New Year 2030 will be December 31, 2029, 12:00:00.

    我们还可以组合 timedelta() 函数的多个参数来计算出更具体的时间。例如,从现在起 27 天 3 小时 45 分钟后的时间是多少?

    # Current time
    now = datetime.now()
    # Timedelta of 27 days, 3 hours, and 45 minutes
    specific_timedelta = timedelta(days=27, hours=3, minutes=45)
    # Time in 27 days, 3 hours, and 45 minutes
    twenty_seven_days = (now + specific_timedelta).strftime("%B %d, %Y, %H:%M:%S")
    print(f"The time in 27 days, 3 hours, and 45 minutes will be {twenty_seven_days}.")

    Output:

    The time in 27 days, 3 hours, and 45 minutes will be March 13, 2022, 15:18:39.

    relativedelta() 相对增量

    我们可以从帮助页面中看到该功能不允许我们使用几个月或几年。为了克服这个限制,我们可以使用 dateutil 包中的 relativedelta 函数。此函数与 timedelta() 非常相似,但它扩展了更多的功能。

    例如,我们想从当前时间中减去 2 年 3 个月 4 天 5 小时:

    # Import relativedelta
    from dateutil.relativedelta import relativedelta
    # Current time
    now = datetime.now()
    # relativedelta object
    relative_delta = relativedelta(years=2, months=3, days=4, hours=5)
    two_years = (now - relative_delta).strftime("%B %d, %Y, %H:%M:%S")
    print(f"The time 2 years, 3 months, 4 days, and 5 hours ago was {two_years}.")

    Output:

    The time 2 years, 3 months, 4 days, and 5 hours ago was November 10, 2019, 06:33:40.

    我们还可以使用 relativedelta() 来计算两个日期时间对象之间的差异:

    relativedelta(datetime(2030, 12, 31), now)

    Output:

    relativedelta(years=+8, months=+10, days=+16, hours=+12, minutes=+26, seconds=+19, microseconds=+728345)

    这些算术运算可能看起来非常抽象和不切实际,但实际上,它们在许多应用程序中都很有用。

    比如说,我们脚本中的某个操作应该只在特定日期前 30 天执行。我们可以定义一个保存当前时间的变量,并为其添加一个 30 天的 timedelta 对象,如果今天是这一天,就会触发相关操作!

    还有,假设我们正在使用 pandas 处理数据集,其中一列包含一些日期。想象一下,我们有一个数据集,其中保存着我们公司一年中的每一天的利润。我们想要创建另一个数据集,该数据集将保存距当前日期正好一年的日期,并预测每一天的利润,此时我们一定会在日期上使用算术计算!

    使用时区

    下面我们来看一看时区,它们可以有不同的形式。我们还应该知道,一些地区实施夏令时 (DST),而另一些地区则没有。

    Python 区分两种类型的日期和时间对象:naive 和 aware。一个 naive 对象不保存任何有关时区的信息,而 aware 对象则保存了它。

    首先,让我们看一个 naive 时间对象:

    # Import tzinfo
    from datetime import tzinfo
    # Naive datetime
    naive_datetime = datetime.now()
    # Naive datetime doesn't hold any timezone information
    type(naive_datetime.tzinfo)

    Output:

    NoneType

    从 Python 3.9 开始,使用 Internet Assigned Numbers Authority 数据库实现了时区的具体实现,实现此功能的模块称为 zoneinfo。

    让我们使用 zoneinfo,特别是 ZoneInfo 类创建一个感知日期时间对象,它是 datetime.tzinfo 抽象类的一个实现:

    # Import ZoneInfo
    from zoneinfo import ZoneInfo
    utc_tz = ZoneInfo("UTC")
    # Aware datetime object with UTC timezone
    dt_utc = datetime.now(tz=utc_tz)
    # The type of an aware object implemented with ZoneInfo is zoneinfo.ZoneInfo
    type(dt_utc.tzinfo)

    Output:

    zoneinfo.ZoneInfo

    对于拥有 aware 的 datetime 对象具有有关时区的信息(实现为 zoneinfo.ZoneInfo 对象)。

    让我们看几个例子,我们想确定中欧和加利福尼亚的当前时间。

    首先,我们可以在 `zoneinfo 中列出所有可用的时区:

    import zoneinfo
    # Will return a long list of timezones (opens many files!)
    zoneinfo.available_timezones()

    Output:

    {'Africa/Abidjan',
    'Africa/Accra',
    'Africa/Addis_Ababa',
    'Africa/Algiers',
    'Africa/Asmara',
    'Africa/Asmera',
    'Africa/Bamako',
    'Africa/Bangui',
    'Africa/Banjul',
    'Africa/Bissau',
    'Africa/Blantyre',
    'Africa/Brazzaville',
    'Africa/Bujumbura',
    'Africa/Cairo',
    'Africa/Casablanca',
    'Africa/Ceuta',
    'Africa/Conakry',
    'Africa/Dakar',
    'Africa/Dar_es_Salaam',
    'Africa/Djibouti',
    'Africa/Douala',
    ...
    'build/etc/localtime'}

    现在我们可以使用 ZoneInfo 来确定不同区域的当前时间:

    # Function to convert datetime into ISO formatted time
    def iso(time, time_format="%Y-%m-%d %H:%M:%S"):
     return time.strftime(time_format)
    # CET time zone
    cet_tz = ZoneInfo("Europe/Paris")
    # PST time zone
    pst_tz = ZoneInfo("America/Los_Angeles")
    # Current time in Central Europe
    dt_cet = datetime.now(tz=cet_tz)
    # Current time in California
    dt_pst = datetime.now(tz=pst_tz)
    print(f"Current time in Central Europe is {iso(dt_cet)}.")
    print(f"Current time in California is {iso(dt_pst)}.")

    Output:

    Current time in Central Europe is 2022-02-14 11:33:42.
    Current time in California is 2022-02-14 02:33:42.

    让我们打印 datetime.now(tz=cet_tz):

    print(datetime.now(tz=cet_tz))

    Output:

    2022-02-14 11:33:43.048967+01:00

    我们看到有 +01:00,它表示 UTC 偏移量。事实上,CET 时区比 UTC 早一小时。

    此外,ZoneInfo 类处理夏令时。例如,我们可以将一天(24 小时)添加到 DST 更改发生的一天。

    # Define timedelta
    time_delta = timedelta(days=1)
    # November 5, 2022, 3 PM
    november_5_2022 = datetime(2022, 11, 5, 15, tzinfo=pst_tz) # Note that we should use tzinfo in the datetime construct
    print(november_5_2022)
    # Add 1 day to November 5, 2022
    print(november_5_2022 + time_delta)

    Output:

    2022-11-05 15:00:00-07:00
    2022-11-06 15:00:00-08:00

    正如我们所见,偏移量从 -07:00 变为 -08:00,但时间保持不变(15:00)。

    2023 年新年倒数计时器

    New Your City 的时代广场在新年前夜吸引了成千上万的人。让我们应用到目前为止所学的一切来为时代广场除夕创建一个倒数计时器!

    在这里,我们将使用 dateutil 包中的 tz,它允许我们设置本地时区来演示 dateutil 包的实用程序。但是我们也可以使用 zoneinfo 中的 build/etc/localtime 时区来做同样的事情。

    from zoneinfo import ZoneInfo
    from dateutil import tz
    from datetime import datetime
    def main():
     """Main function."""
     # Set current time in our local time zone
     now = datetime.now(tz=tz.tzlocal())
     # New York City time zone
     nyc_tz = ZoneInfo("America/New_York")
     # New Year 2023 in NYC
     new_year_2023 = datetime(2023, 1, 1, 0, 0, tzinfo=nyc_tz)
     # Compute the time left to New Year in NYC
     countdown = relativedelta(new_year_2023, now)
     # Print time left to New Year 2023
     print(f"New Year in New Your City will come on: {new_year_2023.strftime('%B %-d, %Y %H:%M:%S')}.")
     print(f"Time left to New Year 2023 in NYC is: {countdown.months} months, {countdown.days} days, {countdown.hours} hours, {countdown.minutes} minutes, {countdown.seconds} seconds.")
    if __name__ == "__main__":
     main()

    Output:

    New Year in New Your City will come on: January 1, 2023 00:00:00.

    Time left to New Year 2023 in NYC is: 10 months, 17 days, 18 hours, 26 minutes, 16 seconds.

    我们将代码包装在 main() 函数中,现在我们可以在 .py 文件中使用它。在这个脚本中,我们处理了时区,创建了一个 datetime 对象,使用 strftime() 将其转换为字符串,甚至访问了 relativedelta 对象的时间属性!

    好了,这就是今天分享的全部内容,喜欢就点个赞吧~

    本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系bd@zhengruan.com
    作者最新文章
    编程开发 时间 Python
    相关文章 更多
    精品专题 更多
    装机必备

    正软商城装机必备专区,精选办公、浏览器、安全防护、影音播放、压缩解压、设计创作和系统工具等电脑常用正版软件,帮助用户快速完成新电脑软件配置。

    Windows

    正软商城Windows软件专区,汇集适用于Windows电脑的办公、设计、安全防护、影音播放、开发工具和系统优化软件,提供软件介绍、系统要求、正版授权及购买下载服务。

    PDF教程

    正软商城PDF教程频道提供PDF编辑、转换、合并、拆分、压缩及格式处理方法,同时介绍常用PDF软件和工具的使用技巧。

    macOS软件

    正软商城macOS软件专区,精选适用于Mac电脑的办公、设计、影音、效率、开发和系统工具,提供软件功能介绍、macOS兼容版本、正版授权及购买下载服务。

    IOS软件

    正软商城iOS软件专区,精选适用于iPhone和iPad的办公、学习、影音、设计、效率及AI应用,提供功能介绍、适用设备、系统要求和正版获取方式等信息。

    AI

    正软商城AI软件专区,汇集AI写作、AI绘画、AI视频、AI办公、AI编程、AI翻译、智能客服和数据分析等人工智能工具,提供功能介绍、适用平台、收费方式及正版购买信息。

    Mac软件 更多
    IntelliJ IDEA macOS版
    IntelliJ IDEA macOS版

    IntelliJ IDEA 是 JetBrains 推出的专业集成开发环境,重点服务于 Java、Kotlin 与 JVM 项目开发。软件集成代码补全、静态检查、重构、调试、测试、版本控制及构建工具,并可借助插件扩展语言和框架支持。

    PyCharm macOS版
    PyCharm macOS版

    JetBrains PyCharm 是面向 Python 开发者的集成开发环境,提供智能补全、代码检查、重构、调试、测试、版本控制及虚拟环境管理功能。Mac 版兼容 Intel 与 Apple 芯片,核心功能可免费使用。

    WebStorm macOS版
    WebStorm macOS版

    JetBrains WebStorm 是面向 JavaScript、TypeScript 和现代 Web 技术的专业集成开发环境,可智能理解项目结构,提供代码补全、重构、错误检查、运行调试、测试及 Git 工具。

    After Effects macOS版
    After Effects macOS版

    Adobe After Effects 是面向动态图形、影视特效与视频合成的专业创作软件。它提供关键帧动画、遮罩抠像、运动跟踪、三维空间、文字动画和表达式等工具,并可与 Premiere Pro、Photoshop、Illustrator

    Audition macOS版
    Audition macOS版

    Adobe Audition 是面向播客、影视后期、音乐制作及内容创作者的专业音频工作站,提供波形精修、多轨录制与混音、频谱编辑、降噪修复、响度匹配和效果处理工具,并可与 Adobe Premiere 协同完成视频声音制作。

    Bridge macOS版
    Bridge macOS版

    Adobe Bridge 是面向摄影师、设计师及内容团队的免费数字资产管理工具,可集中预览照片、视频和 Adobe 项目文件,并利用评级、标签、关键词、元数据、筛选与收藏集完成分类检索。它还支持批量重命名、格式导出、相机导入及 Camera

    Illustrator macOS版
    Illustrator macOS版

    Adobe Illustrator 是 Adobe 推出的专业矢量图形设计软件,适合在 Mac 上制作标志、图标、插画、包装、信息图及印刷版面。它以路径和锚点构建可无损缩放的图形,并提供钢笔、形状、文字、图像描摹、渐变、画板及生成式功能。

    InDesign macOS版
    InDesign macOS版

    Adobe InDesign 是面向印刷品与数字出版物的专业版面设计软件,可在 Mac 上制作书籍、杂志、宣传册、海报、报告及交互式文档。它提供精细的文字样式、网格、母版、长文档管理和印前输出能力。

    Lightroom Classic macOS版
    Lightroom Classic macOS版

    Adobe Lightroom Classic 是面向桌面摄影工作流的照片管理与后期处理软件,可将原始照片保存在本地硬盘,通过目录、关键词、评分和收藏夹高效整理图库,并提供 RAW 冲印、蒙版、镜头校正、批量同步及多格式导出等功能。

    Media Encoder macOS版
    Media Encoder macOS版

    Adobe Media Encoder 是 Adobe 推出的专业音视频编码与转码工具,可通过队列、预设和监视文件夹批量完成格式转换、代理文件创建及多平台成片输出,并与 Premiere Pro、After Effects 等软件紧密协作。

    Photoshop macOS版
    Photoshop macOS版

    Adobe Photoshop 是面向摄影师、设计师和内容创作者的专业图像处理软件,提供图层、蒙版、选区、修复、调色、文字排版、智能对象及生成式编辑等能力。Mac 版支持 Intel 与 Apple Silicon 处理器。

    Premiere Pro macOS版
    Premiere Pro macOS版

    Adobe Premiere Pro 是面向专业视频制作的非线性剪辑软件,提供多轨时间线、调色、音频处理、字幕、代理工作流和多格式输出能力,并可与 After Effects、Audition、Photoshop 及 Frame.io 协同

    WINDOWS 更多
    IntelliJ IDEA Windows版
    IntelliJ IDEA Windows版

    JetBrains IntelliJ IDEA 是以 Java、Kotlin 和 JVM 项目为核心的专业集成开发环境,提供智能补全、代码检查、安全重构、调试、测试、版本控制及构建工具集成。统一发行版的核心功能可免费用于商业和非商业项目,

    PhpStorm Windows版
    PhpStorm Windows版

    PhpStorm 是 JetBrains 面向 PHP 与现代 Web 开发打造的专业集成开发环境,提供代码补全、静态检查、重构、调试、测试、数据库、版本控制及前端语言支持。Windows 用户可直接下载安装程序,

    PyCharm Windows版
    PyCharm Windows版

    PyCharm 是 JetBrains 推出的 Python 集成开发环境,提供智能代码补全、错误检查、重构、调试、测试、Git、终端及 Jupyter Notebook 支持。统一版安装后可体验 30 天 Pro 功能,

    WebStorm Windows版
    WebStorm Windows版

    WebStorm 是 JetBrains 面向 JavaScript、TypeScript 和现代 Web 技术打造的集成开发环境。它提供项目级代码分析、智能补全、安全重构、导航搜索,并集成调试、测试、终端、Git 与常用前端工具,

    Photoshop Windows版
    Photoshop Windows版

    Adobe Photoshop 是面向摄影师、设计师和内容创作者的专业图像处理工具,可在 Windows 上完成照片修饰、选区抠图、图层合成、文字排版、绘画及生成式编辑。软件采用订阅授权,由 Creative Cloud 管理安装、更新与许

    InDesign Windows版
    InDesign Windows版

    Adobe InDesign 是面向印刷与数字出版的专业页面排版工具,可制作书籍、杂志、宣传册、海报、交互式 PDF 和电子书。它提供精细的文字样式、多页面管理、印前检查及多格式输出能力,并能与 Photoshop、Illustrator

    Illustrator Windows版
    Illustrator Windows版

    Adobe Illustrator 是用于绘制矢量图形、插画、图标、徽标和版式的专业设计工具。它以路径和锚点为核心,作品放大后仍能保持清晰,并提供画板、文字、渐变、图像描摹及精确变换等功能,适合品牌视觉、印刷物料、数字界面和商业插画创作。

    Bridge Windows版
    Bridge Windows版

    Adobe Bridge 是 Adobe 推出的创意资产管理工具,可集中预览、分类和查找照片、视频、PDF及多种设计文件,并支持元数据、关键词、评级、批量重命名和格式导出。它可与 Photoshop、Illustrator 等应用衔接,

    Lightroom Classic Windows版
    Lightroom Classic Windows版

    Adobe Lightroom Classic 是面向 Windows 桌面摄影工作流的照片管理与无损编辑工具,可通过目录集中整理大型图库,并完成 RAW 显影、局部蒙版、批量调整、打印和多格式导出。它强调本地文件管理与精细控制,

    Acrobat Pro Windows版
    Acrobat Pro Windows版

    Adobe Acrobat Pro 是面向专业 PDF 工作的综合解决方案,可在 Windows 中创建、编辑、转换、比较、整理和保护文档,并支持表单、电子签名、扫描件文字识别及敏感信息永久遮盖。订阅还包含网页、移动服务和云端协作能力,

    After Effects Windows版
    After Effects Windows版

    Adobe After Effects 是面向动态图形、动画与影视视觉特效制作的专业工具,可完成关键帧动画、图层合成、遮罩跟踪、抠像、文字动画和二维三维元素整合。Windows 版通过 Adobe Creative Cloud 安装及更新,

    Media Encoder Windows版
    Media Encoder Windows版

    Adobe Media Encoder 是 Adobe 面向视频与音频制作流程提供的专业编码和转码工具,可批量处理媒体文件、创建代理、套用输出预设并监控文件夹自动执行任务。它与 Premiere、After Effects、Audition