39个 Python Datetime 小例子,拯救因时间抓狂的你

CRISPR筛选全流程指南:从文库构建到数据分析实战 功能基因组学研究需要高效解析基因型与表型的关联,高通量筛选技术是其中的关键工具。基于CRISPR系统的筛选方法通过大规模sgRNA文库扰动基因功能,结合慢病毒递送和测序分析,能够系统鉴定影响细胞增殖、耐药、病毒感染的候选基因。与RNAi或化学小分子筛选相比,CRISPR筛选具有覆盖全基因组、脱靶率低、信号清晰等优势,已广泛应用于药物靶点发现、合成致死和免疫治疗机制研究。本文围绕实验设计与操作中的核心要点展开,涵盖文库扩增、病毒滴度控制、MOI把握、筛选模式选择以及基于MAGeCK的sgRNA丰度分析,并针对 阅读详情

a74a23696c80955589114e460c2ac63c.png

我们都知道,在 Python 中有各种数据类型,例如整数、浮点数、字符串等。同时在开发脚本或各种算法当中,我们应该经常会使用日期和时间。在日常生活中,我们可以用多种不同的格式来表示日期和时间,例如,7 月 4 日、2022 年 3 月 8 日、22:00 或 2022 年 12 月 31 日 23:59:59。它们使用整数和字符串的组合,或者也可以使用浮点数来表示一天、一分钟等等,各种各样的时间表示方式,确实让人眼花缭乱。

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

cd5b88a21c4f283f57601f8252d78cf6.jpeg

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

  • 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:

---------------------------------------------------------------------------

ValueError                                Traceback (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:

---------------------------------------------------------------------------

ValueError                                Traceback (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() 函数将字符串转换为日期时间对象。这个函数有两个参数:字符串和字符串的格式。

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

代码示例说明
%AMonday完整的工作日名称
%BDecember全月名称
%W2周数(星期一为一周的第一天)

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

# 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:

---------------------------------------------------------------------------

ValueError                                Traceback (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 对象的时间属性!

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


 

 

 

 

 

 
推荐阅读:
入门: 最全的零基础学Python的问题  | 零基础学了8个月的Python  | 实战项目 |学Python就是这条捷径
干货:爬取豆瓣短评,电影《后来的我们》 | 38年NBA最佳球员分析 |   从万众期待到口碑扑街!唐探3令人失望  | 笑看新倚天屠龙记 | 灯谜答题王 |用Python做个海量小姐姐素描图 |碟中谍这么火,我用机器学习做个迷你推荐系统电影
趣味:弹球游戏  | 九宫格  | 漂亮的花 | 两百行Python《天天酷跑》游戏!
AI: 会做诗的机器人 | 给图片上色 | 预测收入 | 碟中谍这么火,我用机器学习做个迷你推荐系统电影
小工具: Pdf转Word,轻松搞定表格和水印! | 一键把html网页保存为pdf!|  再见PDF提取收费! | 用90行代码打造最强PDF转换器,word、PPT、excel、markdown、html一键转换 | 制作一款钉钉低价机票提示器! |60行代码做了一个语音壁纸切换器天天看小姐姐!|

年度爆款文案

点阅读原文,看B站我的视频!

揭秘大厂智能生产调度AI系统架构:架构师拆解中台化设计3大优势 智能生产调度AI系统是基于AI算法(如遗传算法、强化学习、深度学习),结合生产数据(如订单、设备、库存、人员),自动生成最优生产计划与调度方案的系统。最大化设备利用率(减少停机时间);最小化生产周期(快速交付订单);优化库存水平(降低积压与短缺);提升准时交货率(满足客户需求)。维度传统调度系统智能调度AI系统决策逻辑规则引擎+人工经验AI算法(预测+优化)数据处理手工汇总+静态数据实时数据整合+动态更新适应能力固定场景(如单一产品、单一工厂) 阅读详情

相关推荐

PowerBI参数化实战:3分钟搞定动态数据源切换(附常见错误排查)

本文详细介绍了PowerBI参数化实战技巧,教你3分钟实现动态数据源切换。通过创建参数、改造查询和测试切换三步,轻松应对多环境部署与团队协作中的路径问题,并附上常见错误排查指南,有效提升报表的可维护性和工作效率。

p1q2r的博客 586

【时间处理】【推荐】python时间处理模块dateutil

最近用到了一个挺还用的python时间处理模块 dateutil模块主要有两个函数,parser和rrule。 其中parser是根据字符串解析成datetime,而rrule则是根据定义的规则来生成datetime。 安装 直接用easy_install或pip在线安装 easy_install python-dateutil pip install python-dateutil 1、 parser parser是根据字符串解析成datetime,字符串可以很随意,可以用时间日期..

走在搬砖的路上! 2031

手把手教你用DevExpress Patch工具解决VS项目中的试用弹窗问题

本文详细指导开发者使用DevExpress Patch工具解决Visual Studio项目中恼人的试用弹窗问题。核心在于理解并分步处理:首先正确应用补丁工具以绕过运行时验证,然后重点清理或重置项目中的licenses.licx文件以消除编译时验证,从而彻底根治弹窗。

weixin_29234423的博客 590

Python arrow 基础 教程

抱歉我用了个有点标题党的标题,因为担心你错过了本文,但内容绝对干货,本文介绍的关于Python时间日期处理,日期时间处理在实际应用场景中无处不在,所以这也成了编程语言中必不可少的模块,Python 也不例外。但是,你知道在Python中有多少个相关的模块吗?datetime、time、calendar、 dateutil、...

从零开始学习python --zeropython 789

运维与软件实施课表

运维与软件实施课表 课程 章节编号 章节 课程地址 软件及操作系统基础 ch01 软件及操作系统基础01 实施、运维工程师基本技能:https://blog.csdn.net/qq_28189423/article/details/82700539 老毛桃制作winPE镜像:https://blog.csdn.net/qq_2818942...

Mr.O~的博客 1万+

用HFSS复现经典论文:从零搭建带孔缝屏蔽箱体模型(附完整建模步骤与避坑指南)

本文详细介绍了如何使用HFSS电磁仿真软件复现经典论文中的带孔缝屏蔽箱体模型,包括从零搭建模型、设置激励与边界条件、求解优化及结果验证的全过程。特别提供了建模中的布尔运算陷阱、激励设置技巧等实操难点的避坑指南,帮助工程师和学生深入理解电磁屏蔽效能研究。

weixin_30530339的博客 160

python datetime 加一个月_如何在python中自定义月份增加datetime,而不使用库

I need to increment the month of a datetime valuenext_month = datetime.datetime(mydate.year, mydate.month+1, 1)when the month is 12, it becomes 13 and raises error "month must be in 1..12". (I expecte...

weixin_39923623的博客 258

SigFit实战:从FEA到光学仿真的热力耦合分析全流程解析

在光机系统与芯片封装等精密工程领域,热与力的耦合效应是影响产品性能与可靠性的核心物理问题。有限元分析(FEA)是预测结构在热、力载荷下变形与应力的基础工具,但其结果通常无法直接用于评估光学性能。这需要一座桥梁,将物理场数据转化为光学设计语言。其核心原理在于数据映射与面形表征技术,例如通过泽尼克多项式拟合,将离散的节点位移分解为离焦、像散等标准光学像差。这项技术的工程价值在于,它实现了多物理场仿真的闭环,使工程师能在设计阶段精准预测热变形或应力对波前误差、调制传递函数等关键光学指标的影响。其典型应用场景包括高

weixin_28630185的博客 343

python try except 出现异常时,except 中如何返回异常的信息字符串

https://docs.python.org/3/tutorial/errors.html#handling-exceptionshttps://docs.python.org/3/library/exceptions.html#ValueErrortry: int("x") except Exception as e: '''异常的父类,可以捕获所有的异常''' pri...

qq_27361945的博客 8160

UniTouch:多模态触觉对齐技术如何重塑零样本跨模态应用

UniTouch模型通过创新的多模态触觉对齐技术,成功将触觉数据映射到通用的视觉-语言嵌入空间,解决了触觉模态的“孤岛困境”。该技术利用对比学习和传感器特定标记,实现了高质量的零样本学习能力,使模型无需额外训练即可完成触觉分类、描述等任务,并能驱动跨模态生成,为机器人、VR和智能制造等领域提供了强大的触觉理解新范式。

weixin_29044713的博客 409

解决方案:“Project1.exe”(Win32): 已加载“C:\Windows\SysWOW64\KernelBase.dll”。无法查找或打开 PDB 文件。

解决方案:“Project1.exe”(Win32): 已加载“C:\Windows\SysWOW64\KernelBase.dll”。无法查找或打开 PDB 文件。 添加getchar();代码块解决无法查找或打开PDB文件。 错误提示: “Project1.exe”(Win32): 已加载“C:\Windows\SysWOW64\ntdll.dll”。无法查找或打开 PDB 文件。 “Pro...

m0_46523403的博客 6421

python怎么返回上一行代码_Python使用一行代码获取上个月是几月

本文介绍的关于Python时间日期处理,日期时间处理在实际应用场景中无处不在,所以这也成了编程语言中必不可少的模块,Python 也不例外。但是,你知道在Python中有多少个相关的模块吗?datetime、time、calendar、 dateutil、 pytz 等等。 你知道有多少种数据类型吗?date、time、datetime、tzinfo、timedelta 等等。有天我遇到这样的需求...

weixin_39769183的博客 359

MATLAB从入门到精通-APP调用simulink中的参数,并且修改,将结果返回到APP中

本次案例为以下微分方程: 其中方程的初始值为: Step1:搭建simulink文件,如下图所示: 初始值配置在积分模块中,如下图所示: Step2:制作app 操作视频: ,时长01:11 代码: 本文包括APP如何回调simulik中d的参数,以及把simulink中的仿真结果输出到APP中的绘图界面中。 核心代码如下: ...

wenyusuran的专栏 3042

又肝了3天,整理了80个Python DateTime 例子,必须收藏!(1)

先自我介绍一下,小编浙江大学毕业,去过华为、字节跳动等大厂,目前阿里P7深知大多数程序员,想要提升技能,往往是自己摸索成长,但自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!因此收集整理了一份《2024年最新Python全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友。 既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上Python知识点,真正体系化!由于文件比较多,这里只是将部分目录截图出来,全套

m0_60707538的博客 641

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

dedecms 日期时间格式大全

日期时间格式 (利用strftime()函数格式化时间)0 首页: ([field:pubdate function=‘strftime("%m-%d",@me)’/])(5-15) ([field:pubdate function=‘strftime("%b %d, %Y",@me)’/])(May 15, 2008) 列表页: [field:pubdate function=“GetDateTimeMK(@me)”/]==2008-1-1 18:30:02 [field:pubdate function

weixin_54792157的博客 434

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

python判断输入日期是否有效_关于验证:在python中,如何检查日期是否有效?

我正在构建一种日历Web应用程序我已经在HTML中设置了以下表格12345678Year ("yyyy"): Month ("mm"): Day ("dd"): Hour ("hh"): Description: 然后,来自用户的输入将被提交到小服务器中我想知道,有没有办法检查用户输入的日期是否是有效日期?显然,我可以编写很多if语句,但是是否有任何内置函数可以检查此内容?谢谢相关:如何...

weixin_39625975的博客 1755

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

又肝了3天,整理了80个Python DateTime 例子,必须收藏!

日常工作中,用 Python 处理时间格式的数据是非常常见的,今天就来分享 DateTime 相关的示例 文章很长,高低要忍一下,如果忍不了,那就收藏吧,总会用到的 萝卜哥也贴心的做成了PDF,在文末获取! 文章目录使用 time 模块展示当前日期和时间将天、小时、分钟转换为秒使用 Pandas 获取当前日期和时间将字符串转换为日期时间对象以毫秒为单位获取当前时间以 MST、EST、UTC、GMT 和 HST 获取当前日期时间从给定的日期当中获取星期几计算两个日期时间对象之间的时差将 5 分钟添加到 Uni

周萝卜的博客 2180

将字符串转换为日期型对象date.fromisoformat(str)

print(f"【显示】type(s)={type(s)}")print(f"【显示】type(d)={type(d)}")【小白从小学Python、C、Java】print(f"【显示】s ={s}")print(f"【显示】d ={d}")下列代码执行后,变量d的数据类型是?【计算机等考+500强证书+考研】【Python-数据分析】将字符串转换为日期型对象。

liujingwei8610的专栏 419

Python中ValueError:值错误的排查与修复

防御性编程三原则显式验证:所有外部输入必须验证类型检查:关键操作前使用错误处理:提供有意义的错误信息代码审查清单✅ 所有类型转换操作是否有异常处理?✅ 集合操作是否检查元素存在性?✅ API参数是否有范围验证?✅ 错误信息是否包含足够上下文?

shejizuopin的博客 1846

python 时间time()及日期datetime()函数

python 时间time()及日期datetime()函数

IT之一小佬的博客 3万+

时间符号

python中时间日期格式化符号: %y 两位数的年份表示(00-99) %Y 四位数的年份表示(000-9999) %m 月份(01-12) %d 月内中的一天(0-31) %H 24小时制小时数(0-23) %I 12小时制小时数(01-12) %M 分钟数(00=59) %S 秒(00-59) %a 本地简化星期名称 %A 本地完整星期名称 %b 本地简化的月份名称 %B 本地完整的月份名称...

weixin_44812034的博客 3132

在 Python 中解析 ISO 8601 日期

此外,我们将讨论典型的 ISO 8601 日期的结构,并向您展示如何将典型的 DateTime 对象解析为可以在所有地方使用的标准化 DateTime。这些库可以轻松地创建基于时区的 ISO 8601 日期格式,并将 ISO 8601 DateTime 字符串解析为典型的 Python DateTime 对象。它们是 ISO 8601 的不同变体,但以上将是本文的参考。方法帮助我们获取和开发当前日期和时间,并提供典型的 DateTime 对象,我们可以操作或解析该对象以获取我们需要的任何信息。

迹忆客 1695

sqlalchemy auto map ValueError: Invalid isoformat string: ‘xxxx‘

我们用python 读取 现有数据时候,经常用到auto map 来帮我们自动完成ORM。但是有时候像日期这种东西。数据库里面可能不是标准的iso 格式。导致sqlalchemy 报 ValueError: Invalid isoformat string: ‘xxxx’

god_wen的博客 806

MySQL-----存储过程

用户定义变量是用户根据需要自己定义的变量,用户变量不用提前声明,在用的时候直接用“@变量名使用就可以。其作用域为当前连接。▶ 赋值语法select 字段名 into @var_name from 表名;▶ 使用语法效果演示-- 赋值set @mygender := '男',@myhobby := 'java';-- 使用注意用户定义的变量无需对其进行声明或初始化,只不过获取到的值为NULL。

没技术的博客 1456

MySQL:MySQL日期数据范例、MySQL时候范例利用总结

<br />MySQL 日期范例:日期格局、所占存储空间、日期规模 比力。 <br />日期范例 存储空间 日期格局 日期规模 <br />------------ --------- --------------------- ----------------------------------------- <br />datetime 8 bytes YYYY-MM-DD HH:MM:SS 1000-01-01 00:00:00 ~ 9999-12-31 23:59:59 <br />timestam

wcp88888888的专栏 797
上一篇: 震惊!用Python探索《红楼梦》的人物关系!
下一篇: 学到一招!Python 下载大文件,哪种方式速度更快
菜鸟学Python
博客等级 码龄9年 8088粉丝 571原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值