在python中添加年份

2024-01-10

如果我想在程序中添加 100 年,为什么它显示错误的日期?

import datetime
stringDate= "January 10, 1920"
dateObject= datetime.datetime.strptime(stringDate, "%B %d, %Y")
endDate= dateObject+datetime.timedelta(days=100*365)
print dateObject.date()
print endDate.date()

一年的秒数不固定 https://stackoverflow.com/a/32658742/4279. 你知道一年有多少天吗?再想一想。 https://www.washingtonpost.com/news/speaking-of-science/wp/2017/02/24/think-you-know-how-many-days-are-in-a-year-think-again/?utm_term=.f05c01f51363

要执行周期(日历)算术,您可以使用dateutil.relativedelta http://dateutil.readthedocs.org/en/latest/relativedelta.html:

#!/usr/bin/env python
from datetime import date
from dateutil.relativedelta import relativedelta # $ pip install python-dateutil

print(date(1920, 1, 10) + relativedelta(years=+100))
# -> 2020-01-10

要明白,为什么d.replace(year=d.year + 100)失败,请考虑:

print(date(2000, 2, 29) + relativedelta(years=+100))
2100-02-28

请注意2100不是闰年,而2000是闰年。

如果您想要添加的唯一单位是年,那么您可以仅使用 stdlib 来实现它:

from calendar import isleap

def add_years(d, years):
    new_year = d.year + years
    try:
        return d.replace(year=new_year)
    except ValueError:
        if (d.month == 2 and d.day == 29 and # leap day
            isleap(d.year) and not isleap(new_year)):
            return d.replace(year=new_year, day=28)
        raise

Example:

from datetime import date

print(add_years(date(1920, 1, 10), 100))
# -> 2020-01-10
print(add_years(date(2000, 2, 29), 100))
# -> 2100-02-28
print(add_years(date(2000, 2, 29), 4))
# -> 2004-02-29
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在python中添加年份 的相关文章

  • 在 Python 中将列表元素作为单独的项目返回

    Stackoverflow 的朋友们大家好 我有一个计算列表的函数 我想单独返回列表的每个元素 如下所示 接收此返回的函数旨在处理未定义数量的参数 def foo my list 1 2 3 4 return 1 2 3 4 列表中的元素数
  • 在 Celery 任务中调用 Google Cloud API 永远不会返回

    我正在尝试拨打外部电话Google Cloud Natural Language API从一个内Celery任务 使用google cloud python包裹 问题是对 API 的调用永远不会返回 挂起 celery task def g
  • NLTK 2.0分类器批量分类器方法

    当我运行此代码时 它会抛出一个错误 我认为这是由于 NLTK 3 0 中不存在batch classify 方法 我很好奇如何解决旧版本中的某些内容在新版本中消失的此类问题 def accuracy classifier gold resu
  • 我应该使用 Python 双端队列还是列表作为堆栈? [复制]

    这个问题在这里已经有答案了 我想要一个可以用作堆栈的 Python 对象 使用双端队列还是列表更好 元素数量较少还是数量较多有什么区别 您的情况可能会根据您的应用程序和具体用例而有所不同 但在一般情况下 列表非常适合堆栈 append is
  • 为什么 web2py 在启动时崩溃?

    我正在尝试让 web2py 在 Ubuntu 机器上运行 所有文档似乎都表明要在 nix 系统上运行它 您需要下载源代码并执行以下操作 蟒蛇 web2py py 我抓住了source http www web2py com examples
  • 更好地相当于这个疯狂的嵌套 python for 循环

    for a in map for b in map a for c in map b for d in map c for e in map d print a b c d e 上面的代码用于创建图中一定长度的所有路径 map a 表示从
  • PyQt 使用 ctrl+Enter 触发按钮

    我正在尝试在我的应用程序中触发 确定 按钮 我当前尝试的代码是这样的 self okPushButton setShortcut ctrl Enter 然而 它不起作用 这是有道理的 我尝试查找一些按键序列here http ftp ics
  • Pycharm 在 os.path 连接上出现“未解析的引用”

    将pycharm升级到2018 1 并将python升级到3 6 5后 pycharm报告 未解析的引用 join 最新版本的 pycharm 不会显示以下行的任何警告 from os path import join expanduser
  • Tensorboard SyntaxError:语法无效

    当我尝试制作张量板时 出现语法错误 尽管开源代码我还是无法理解 我尝试搜索张量板的代码 但不清楚 即使我不擅长Python 我这样写路径C Users jh902 Documents logs因为我正在使用 Windows 10 但我不确定
  • 打印包含字符串和其他 2 个变量的变量

    var a 8 var b 3 var c hello my name is var a and var b bye print var c 当我运行程序时 var c 会像这样打印出来 hello my name is 8 and 3 b
  • 如何使用 Selenium 和 ChromeDriver 解决 TypeError: 'module' object is not callable 错误 [重复]

    这个问题在这里已经有答案了 代码试验 from selenium import webdriver from selenium webdriver chrome options import Options as Chromeoptions
  • 尽管我已在 python ctypes 中设置了信号处理程序,但并未调用它

    我尝试过使用 sigaction 和 ctypes 设置信号处理程序 我知道它可以与python中的信号模块一起使用 但我想尝试学习 当我向该进程发送 SIGTERM 时 但它没有调用我设置的处理程序 只打印 终止 为什么它不调用处理程序
  • Pandas 组合不同索引的数据帧

    我有两个数据框df 1 and df 2具有不同的索引和列 但是 有一些索引和列重叠 我创建了一个数据框df索引和列的并集 因此不存在重复的索引或列 我想填写数据框df通过以下方式 for x in df index for y in df
  • 如何使用 Python 3 检查目录是否包含文件

    我到处寻找这个答案但找不到 我正在尝试编写一个脚本来搜索特定的子文件夹 然后检查它是否包含任何文件 如果包含 则写出该文件夹的路径 我已经弄清楚了子文件夹搜索部分 但检查文件却难倒了我 我发现了有关如何检查文件夹是否为空的多个建议 并且我尝
  • 找到一个数字所属的一组范围

    我有一个 200k 行的数字范围列表 例如开始位置 停止位置 该列表包括除了非重叠的重叠之外的所有类型的重叠 列表看起来像这样 3 5 10 30 15 25 5 15 25 35 我需要找到给定数字所属的范围 并对 100k 个数字重复该
  • 在 Google App Engine 中,如何避免创建具有相同属性的重复实体?

    我正在尝试添加一个事务 以避免创建具有相同属性的两个实体 在我的应用程序中 每次看到新的 Google 用户登录时 我都会创建一个新的播放器 当新的 Google 用户在几毫秒内进行多个 json 调用时 我当前的实现偶尔会创建重复的播放器
  • 如何以正确的方式为独立的Python应用程序制作setup.py?

    我读过几个类似的主题 但还没有成功 我觉得我错过或误解了一些基本的事情 这就是我失败的原因 我有一个用 python 编写的 应用程序 我想在标准 setup py 的帮助下进行部署 由于功能复杂 它由不同的 python 模块组成 但单独
  • 重新分配唯一值 - pandas DataFrame

    我在尝试着assign unique值在pandas df给特定的个人 For the df below Area and Place 会一起弥补unique不同的价值观jobs 这些值将分配给个人 总体目标是使用尽可能少的个人 诀窍在于这
  • pandas.read_csv 将列名移动一倍

    我正在使用位于的 ALL zip 文件here http www fec gov disclosurep PDownload do 我的目标是用它创建一个 pandas DataFrame 但是 如果我跑 data pd read csv
  • pytest找不到模块[重复]

    这个问题在这里已经有答案了 我正在关注pytest 良好实践 https docs pytest org en latest explanation goodpractices html test discovery或者至少我认为我是 但是

随机推荐

  • Android 应用内计费、非消耗品

    我正在实施应用内计费 用户将能够购买优质内容的访问权限 这是典型的非消耗品 假设优质内容是问题应用程序中的额外问题或类别 我用过this http www techotopia com index php Integrating Googl
  • 如何设置UILabel发光效果的颜色?

    我们通常可以设置fontColorUILabel 的实现方式 label textColor self someTextColor 和阴影 发光 label layer shadowColor self someGlowColor labe
  • 如何在shell脚本中调用函数?

    我有一个有条件调用函数的 shell 脚本 例如 if choice true then process install elif choice false then process exit fi process install comm
  • 通过句子或段落训练和评估 spaCy 模型

    观察 段落 I love apple I eat one banana a day句子 I love apple I eat one banana a day这一段有两句话 I love apple and I eat one banana
  • 无法添加实体类型“X”的种子实体,因为没有为所需属性“..ID”提供值

    我在玩机智EF Core 2 1 预览 2 我在使用 HasData Seed 方法时遇到问题OnModelCreating ModelBuilder modelBuilder 我的模型是简单的 POCO 类 没有注释 public cla
  • 无法使用“Regex::replace()”来替换编号的捕获组

    我正在将复数器移植到 Rust 但在使用正则表达式时遇到了一些困难 我无法获取Regex replace 正如我所期望的那样 替换编号捕获组的方法 例如 以下显示空字符串 let re Regex new m l ouse unwrap p
  • 从文件开头删除字节数

    我想复制一个没有前 256 个字节的文件 有没有一个好的方法可以用 python 来做到这一点 我猜想简单的方法是用计数器读取字节 然后仅在达到 256 时才开始复制 我希望有更优雅的方式 Thanks with open input rb
  • 如何在复杂数据的情况下分离行

    说实话这个问题本来就不是我的 这个问题 https stackoverflow com q 67871768 2884859促使我把它放在一个简化的案例中 因此 我必须根据分隔符将输入到单元格 列中 的数据分隔成单独的行 即 在目前的情况下
  • 我从脚本创建了文本区域扩展器,但之后它没有扩展

    不知道标题是否正确 我使用一个脚本创建了一张包含 5 个文本区域且 class expand 的表 当我写入时 该文本区域会扩展 但随后不起作用 写完之后有调用jquery插件的方法吗 在我尝试不创建文本区域之前 我在 html 文件中写入
  • Bash 脚本将文本文件与文件名中的特定子字符串连接起来

    在某个目录中 我有许多包含一堆文本文件的目录 我正在尝试编写一个脚本 仅将每个目录中文件名中包含字符串 R1 的文件连接到该特定目录中的一个文件中 以及将那些文件名中包含 R2 的文件连接到另一个 这是我写的 但它不起作用 bin bash
  • 如何使用设备ID获取USB硬件ID?

    如何使用设备ID获取USB设备的硬件ID 我使用的是vc 6 0 操作系统是xp 使用wmi可以吗 终于解决了我的问题 谢谢你的回复 我在这里发布代码 它可能对某人有用 通过这段代码 我们可以获取与我们系统连接的设备的所有硬件ID HDEV
  • 为什么在 WPF 中的菜单上操作时 TextBox 不会失去焦点?

    如果我编辑与 ViewModel 绑定的 TextBox 上的文本 然后单击主应用程序菜单 以保存数据 ViewModel 不会使用新数据进行更新 因为不知何故 TextBox 不会失去焦点 然后数据未更新 为什么文本框不会失去焦点 我应该
  • Python循环引用

    尝试在同一个文件中拥有两个相互引用的类 让它发挥作用的最佳方法是什么 class Foo object other Bar class Bar object other Foo if name main print all ok 问题似乎在
  • Android 空指针异常 不确定如何修复它

    我的代码中的一行不断收到空指针异常错误 但我不知道如何修复它 它基本上只是另一种方法的副本 所以我不知道为什么它会给我错误 任何帮助 将不胜感激 import java util Calendar import android app Ac
  • Java 上有关无效 XML 字符的错误

    在 Java 上解析 xml 文件时出现错误 An invalid XML character Unicode 0x0 was found in the element content of the document xml 来自 web
  • Kotlin:安全的 lambda(无内存泄漏)?

    读完后这篇关于内存泄漏的文章 https medium com freenet engineering memory leaks in android identify treat and avoid d0b1233acc8 yet4778
  • “如果不是 _____ 就什么都不是”以及它检查的内容

    VB 中的这条语句是检查对象是否存在 还是检查内容是否为空 我认为它正在检查内容是否为空 但我想仔细检查一下 提前致谢 VBA 中 null 的概念 即NullReferenceException null 如果您熟悉 C 或者NullPo
  • 流星当前活跃用户?

    我正在流星中制作一个简单的聊天室 我如何获取当前活跃用户的列表 有没有办法真正获取当前连接 客户端的列表 我昨天浏览了流星源 看看是否已经有类似的东西了 我找不到连接的标志或任何东西 我想你会有两种选择 在客户端和服务器中为每个连接的用户实
  • 以编程方式更新 MS Word 中 excel 对象的链接命名范围 (2007)

    第一个问题 请问这个问题是否已经解决 但我已经彻底搜索并找不到答案 我已将几个命名范围链接到一个 Word 文档中 此 Word 文档 以及带有命名范围的相关 Excel 工作簿 是一个模板 它供同事制作这些模板 Word 文档和 Exce
  • 在python中添加年份

    如果我想在程序中添加 100 年 为什么它显示错误的日期 import datetime stringDate January 10 1920 dateObject datetime datetime strptime stringDate