<tbody id="86a2i"></tbody>


<dd id="86a2i"></dd>
<progress id="86a2i"><track id="86a2i"></track></progress>

<dd id="86a2i"></dd>
<em id="86a2i"><ruby id="86a2i"><u id="86a2i"></u></ruby></em>

    <dd id="86a2i"></dd>

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

    方法一:使用 timedelta

    datetime 中包含了 timedelta ,可以用來實現這個功能

    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:
        """ 返回兩個時間相差的秒數 """
        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 這個第三方庫

    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

    原文地址:https://segmentfault.com/a/1190000042816011

    相關文章:

    免费一级a片在线播放视频|亚洲娇小性XXXX色|曰本无码毛片道毛片视频清|亚洲一级a片视频免费观看
    <tbody id="86a2i"></tbody>

    
    
    <dd id="86a2i"></dd>
    <progress id="86a2i"><track id="86a2i"></track></progress>

    <dd id="86a2i"></dd>
    <em id="86a2i"><ruby id="86a2i"><u id="86a2i"></u></ruby></em>

      <dd id="86a2i"></dd>