最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Python按天實(shí)現(xiàn)生成時(shí)間范圍序列的方法詳解

 更新時(shí)間:2022年11月16日 11:24:22   作者:ponponon  
有的時(shí)候我們希望生成一段時(shí)間返回,比如從?2022-01-01?00:00:00?后面的?10?天,這么?10?個(gè)?datetime?對(duì)象,但是我們又不想自己去計(jì)算哪些月有30天哪些月有31天。所以本文將用Python實(shí)現(xiàn)按天自動(dòng)生成時(shí)間范圍序列,需要的可以參考一下

有的時(shí)候我們希望生成一段時(shí)間返回,比如從 2022-01-01 00:00:00 后面的 10 天,這么 10 個(gè) datetime 對(duì)象,但是我們又不想自己去計(jì)算哪些月有30天哪些月有31天。

使用 timedelta

datetime 中包含了 timedelta ,可以用來實(shí)現(xiàn)這個(gè)功能

from datetime import datetime, timedelta, timezone
from pydantic.datetime_parse import parse_datetime
from loguru import logger


SECOND: int = 1
MINUTE: int = SECOND*60
HOUR: int = MINUTE*60
DAY: int = HOUR*24
WEEK: int = DAY*7
MONTH: int = DAY*30


def get_utc_now_timestamp(with_tzinfo: bool = True) -> datetime:
    """ https://blog.csdn.net/ball4022/article/details/101670024 """
    if not with_tzinfo:
        return datetime.utcnow()
    return datetime.utcnow().replace(tzinfo=timezone.utc)


def timedelta_seconds(start_time: datetime, end_time: datetime = None) -> int:
    """ 返回兩個(gè)時(shí)間相差的秒數(shù) """
    if not end_time:
        end_time = get_utc_now_timestamp()

    return int((end_time - start_time).total_seconds())


def custom_timestamp(base_timestamp: datetime, seconds: int, reduce=False):
    return base_timestamp + timedelta(seconds=seconds) \
        if not reduce \
        else base_timestamp - timedelta(seconds=seconds)


start_datetime = parse_datetime('2022-02-27 00:00:00')
data = [
    dt
    for dt in [
        custom_timestamp(start_datetime, DAY*i) for i in range(10)
    ]
]
logger.debug(data)

輸出如下:

╰─?  python -u "/Users/ponponon/Desktop/code/me/ideaboom/main.py"
2022-11-15 15:18:37.653 | DEBUG    | __main__:<module>:67 - [datetime.datetime(2022, 2, 27, 0, 0), datetime.datetime(2022, 2, 28, 0, 0), datetime.datetime(2022, 3, 1, 0, 0), datetime.datetime(2022, 3, 2, 0, 0), datetime.datetime(2022, 3, 3, 0, 0), datetime.datetime(2022, 3, 4, 0, 0), datetime.datetime(2022, 3, 5, 0, 0), datetime.datetime(2022, 3, 6, 0, 0), datetime.datetime(2022, 3, 7, 0, 0), datetime.datetime(2022, 3, 8, 0, 0)]

使用 arrow 這個(gè)第三方庫

import arrow
from loguru import logger
from pydantic.datetime_parse import parse_datetime

for crawl_date in arrow.Arrow.range('day', parse_datetime('2022-02-27 00:00:00'), parse_datetime('2022-03-10 00:00:00')):
    logger.debug(crawl_date.datetime)

輸出如下:

╰─?  python -u "/Users/ponponon/Desktop/code/me/ideaboom/datetime_arrow_range.py"
2022-11-15 15:28:52.130 | DEBUG    | __main__:<module>:6 - 2022-02-27 00:00:00+00:00
2022-11-15 15:28:52.130 | DEBUG    | __main__:<module>:6 - 2022-02-28 00:00:00+00:00
2022-11-15 15:28:52.130 | DEBUG    | __main__:<module>:6 - 2022-03-01 00:00:00+00:00
2022-11-15 15:28:52.130 | DEBUG    | __main__:<module>:6 - 2022-03-02 00:00:00+00:00
2022-11-15 15:28:52.130 | DEBUG    | __main__:<module>:6 - 2022-03-03 00:00:00+00:00
2022-11-15 15:28:52.130 | DEBUG    | __main__:<module>:6 - 2022-03-04 00:00:00+00:00
2022-11-15 15:28:52.130 | DEBUG    | __main__:<module>:6 - 2022-03-05 00:00:00+00:00
2022-11-15 15:28:52.130 | DEBUG    | __main__:<module>:6 - 2022-03-06 00:00:00+00:00
2022-11-15 15:28:52.130 | DEBUG    | __main__:<module>:6 - 2022-03-07 00:00:00+00:00
2022-11-15 15:28:52.130 | DEBUG    | __main__:<module>:6 - 2022-03-08 00:00:00+00:00
2022-11-15 15:28:52.130 | DEBUG    | __main__:<module>:6 - 2022-03-09 00:00:00+00:00
2022-11-15 15:28:52.130 | DEBUG    | __main__:<module>:6 - 2022-03-10 00:00:00+00:00

補(bǔ)充

當(dāng)然,Python還有很多生成不同要求的時(shí)間序列的方法,下面小編為大家整理了一些,希望對(duì)大家有所幫助

生成不同間隔的時(shí)間序列

import pandas as pd
import numpy as np
import datetime as dt

# 從2022-07-01開始,間隔3天,生成10條 時(shí)間數(shù)據(jù)
rng = pd.date_range('2022-07-01', periods = 10, freq = '3D')
print(rng)
print("#####################")

# 指定開始時(shí)間,結(jié)束時(shí)間  以及頻率
data=pd.date_range('2022-01-01','2023-01-01',freq='M')
print(data)
print("#####################")

# 從2022-01-01開始,間隔1天,生成20條 時(shí)間數(shù)據(jù)
time=pd.Series(np.random.randn(20),
           index=pd.date_range(dt.datetime(2022,1,1),periods=20))
print(time)
print("#####################")

# 不規(guī)則的時(shí)間間隔
p1 = pd.period_range('2022-01-01 10:10', freq = '25H', periods = 10)
print(p1)
print("######################################")

# 指定索引
rng = pd.date_range('2022 Jul 1', periods = 10, freq = 'D')
print(pd.Series(range(len(rng)), index = rng))
print("######################################")

測(cè)試記錄:

DatetimeIndex(['2022-07-01', '2022-07-04', '2022-07-07', '2022-07-10',
               '2022-07-13', '2022-07-16', '2022-07-19', '2022-07-22',
               '2022-07-25', '2022-07-28'],
              dtype='datetime64[ns]', freq='3D')
#####################
DatetimeIndex(['2022-01-31', '2022-02-28', '2022-03-31', '2022-04-30',
               '2022-05-31', '2022-06-30', '2022-07-31', '2022-08-31',
               '2022-09-30', '2022-10-31', '2022-11-30', '2022-12-31'],
              dtype='datetime64[ns]', freq='M')
#####################
2022-01-01   -0.957412
2022-01-02   -0.333720
2022-01-03    1.079960
2022-01-04    0.050675
2022-01-05    0.270313
2022-01-06   -0.222715
2022-01-07   -0.560258
2022-01-08    1.009430
2022-01-09   -0.678157
2022-01-10    0.213557
2022-01-11   -0.720791
2022-01-12    0.332096
2022-01-13   -0.986449
2022-01-14   -0.357303
2022-01-15   -0.559618
2022-01-16    0.480281
2022-01-17   -0.443998
2022-01-18    1.541631
2022-01-19   -0.094559
2022-01-20    1.875012
Freq: D, dtype: float64
#####################
PeriodIndex(['2022-01-01 10:00', '2022-01-02 11:00', '2022-01-03 12:00',
             '2022-01-04 13:00', '2022-01-05 14:00', '2022-01-06 15:00',
             '2022-01-07 16:00', '2022-01-08 17:00', '2022-01-09 18:00',
             '2022-01-10 19:00'],
            dtype='period[25H]', freq='25H')
######################################
2022-07-01    0
2022-07-02    1
2022-07-03    2
2022-07-04    3
2022-07-05    4
2022-07-06    5
2022-07-07    6
2022-07-08    7
2022-07-09    8
2022-07-10    9
Freq: D, dtype: int64
######################################

截?cái)鄷r(shí)間段

import pandas as pd
import numpy as np
import datetime as dt

# 從2022-01-01開始,間隔1天,生成20條 時(shí)間數(shù)據(jù)
time=pd.Series(np.random.randn(20),
           index=pd.date_range(dt.datetime(2022,1,1),periods=20))
print(time)
print("#####################")

# 只輸出2022-01-10 之后的數(shù)據(jù)
print(time.truncate(before='2022-1-10'))
print("#####################")

# 只輸出2022-01-10 之后的數(shù)據(jù)
print(time.truncate(after='2022-1-10'))
print("#####################")

# 輸出區(qū)間段
print(time['2022-01-15':'2022-01-20'])
print("#####################")

測(cè)試記錄:

2022-01-01   -0.203552
2022-01-02   -1.035483
2022-01-03    0.252587
2022-01-04   -1.046993
2022-01-05    0.152435
2022-01-06   -0.534518
2022-01-07    0.770170
2022-01-08   -0.038129
2022-01-09    0.531485
2022-01-10    0.499937
2022-01-11    0.815295
2022-01-12    2.315740
2022-01-13   -0.443379
2022-01-14   -0.689247
2022-01-15    0.667250
2022-01-16   -2.067246
2022-01-17   -0.105151
2022-01-18   -0.420562
2022-01-19    1.012943
2022-01-20    0.509710
Freq: D, dtype: float64
#####################
2022-01-10    0.499937
2022-01-11    0.815295
2022-01-12    2.315740
2022-01-13   -0.443379
2022-01-14   -0.689247
2022-01-15    0.667250
2022-01-16   -2.067246
2022-01-17   -0.105151
2022-01-18   -0.420562
2022-01-19    1.012943
2022-01-20    0.509710
Freq: D, dtype: float64
#####################
2022-01-01   -0.203552
2022-01-02   -1.035483
2022-01-03    0.252587
2022-01-04   -1.046993
2022-01-05    0.152435
2022-01-06   -0.534518
2022-01-07    0.770170
2022-01-08   -0.038129
2022-01-09    0.531485
2022-01-10    0.499937
Freq: D, dtype: float64
#####################
2022-01-15    0.667250
2022-01-16   -2.067246
2022-01-17   -0.105151
2022-01-18   -0.420562
2022-01-19    1.012943
2022-01-20    0.509710
Freq: D, dtype: float64
#####################

到此這篇關(guān)于Python按天實(shí)現(xiàn)生成時(shí)間范圍序列的方法詳解的文章就介紹到這了,更多相關(guān)Python時(shí)間范圍序列內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • python使用nntp讀取新聞組內(nèi)容的方法

    python使用nntp讀取新聞組內(nèi)容的方法

    這篇文章主要介紹了python使用nntp讀取新聞組內(nèi)容的方法,實(shí)例分析了Python操作nntp讀取新聞組內(nèi)容的相關(guān)技巧,需要的朋友可以參考下
    2015-05-05
  • python使用fork實(shí)現(xiàn)守護(hù)進(jìn)程的方法

    python使用fork實(shí)現(xiàn)守護(hù)進(jìn)程的方法

    守護(hù)進(jìn)程(Daemon)也稱為精靈進(jìn)程是一種生存期較長的一種進(jìn)程。它們獨(dú)立于控制終端并且周期性的執(zhí)行某種任務(wù)或等待處理某些發(fā)生的事件。他們常常在系統(tǒng)引導(dǎo)裝入時(shí)啟動(dòng),在系統(tǒng)關(guān)閉時(shí)終止。
    2017-11-11
  • python logging日志模塊原理及操作解析

    python logging日志模塊原理及操作解析

    這篇文章主要介紹了python logging日志模塊原理及操作解析,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-10-10
  • Python文件處理的魔法之旅

    Python文件處理的魔法之旅

    Python文件處理在數(shù)據(jù)持久化、配置管理和日志記錄方面發(fā)揮著至關(guān)重要的作用,通過學(xué)習(xí)如何讀取、寫入和修改文件,開發(fā)者可以更加高效地處理各種數(shù)據(jù)和配置文件,需要的朋友可以參考下
    2024-11-11
  • Python 實(shí)現(xiàn)簡單的客戶端認(rèn)證

    Python 實(shí)現(xiàn)簡單的客戶端認(rèn)證

    這篇文章主要介紹了Python 如何實(shí)現(xiàn)簡單的客戶端認(rèn)證,文中講解非常細(xì)致,代碼幫助大家更好的理解和學(xué)習(xí),感興趣的朋友可以了解下
    2020-07-07
  • Pandas執(zhí)行SQL操作的實(shí)現(xiàn)

    Pandas執(zhí)行SQL操作的實(shí)現(xiàn)

    使用SQL語句能夠完成對(duì)table的增刪改查操作,Pandas同樣也可以實(shí)現(xiàn)SQL語句的基本功能,本文就來介紹一下,具有一檔的參考價(jià)值,感興趣的可以了解一下
    2024-07-07
  • pytorch損失反向傳播后梯度為none的問題

    pytorch損失反向傳播后梯度為none的問題

    這篇文章主要介紹了pytorch 出現(xiàn)損失反向傳播后梯度為none的問題,具有很好的參考價(jià)值,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-05-05
  • Python如何將模塊打包并發(fā)布

    Python如何將模塊打包并發(fā)布

    這篇文章主要介紹了Python如何將模塊打包并發(fā)布,幫助大家分享自己的模塊,感興趣的朋友可以了解下
    2020-08-08
  • python 通過可變參數(shù)計(jì)算n個(gè)數(shù)的乘積方法

    python 通過可變參數(shù)計(jì)算n個(gè)數(shù)的乘積方法

    今天小編就為大家分享一篇python 通過可變參數(shù)計(jì)算n個(gè)數(shù)的乘積方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2019-06-06
  • Python包裝之對(duì)象處理

    Python包裝之對(duì)象處理

    這篇文章主要介紹了Python包裝之對(duì)象處理,文章圍繞主題展開詳細(xì)的內(nèi)容介紹,具有一定的參考價(jià)值,需要的小伙伴可以參考一下
    2022-06-06

最新評(píng)論

酒泉市| 五原县| 四平市| 晋宁县| 乌恰县| 枣强县| 定边县| 桑日县| 天祝| 寿阳县| 甘肃省| 南城县| 湖州市| 涟水县| 浪卡子县| 屏南县| 恩平市| 武威市| 北流市| 高碑店市| 汝南县| 新闻| 宁波市| 赫章县| 黄大仙区| 拜泉县| 乐陵市| 独山县| 平罗县| 江川县| 镇宁| 大新县| 海南省| 孟州市| 三原县| 周至县| 无极县| 镇江市| 军事| 清原| 阜宁县|