当前位置: 首页 > 面试题库 >

从字符串日期中提取年份和儒略日

端木狐若
2023-03-14
问题内容

"2012.11.07"在python中有一个字符串。我需要将其转换为date对象,然后获取 year 以及 Julian day
的整数值。可能吗?


问题答案:

首先,您可以将其转换为这样的datetime.datetime对象:

>>> import datetime
>>> fmt = '%Y.%m.%d'
>>> s = '2012.11.07'
>>> dt = datetime.datetime.strptime(s, fmt)
>>> dt
datetime.datetime(2012, 11, 7, 0, 0)

然后,您可以使用上的方法datetime来获取所需的内容……除了datetime没有直接所需的功能之外,因此您需要转换为时间元组

>>> tt = dt.timetuple()
>>> tt.tm_yday
312

术语“朱利安日”具有几个不同的含义。如果要查找2012312,则必须间接执行此操作,例如,以下一项。

>>> int('%d%03d' % (tt.tm_year, tt.tm_yday))
2012312
>>> tt.tm_year * 1000 + tt.tm_yday
2012312

如果您正在寻找不同的含义,那么应该可以从这里弄清楚。例如,如果您想要“自4713年1月1日起的天数”的含义,并且您有一个要求使用公历年份和年份的公式,则可以在上面插入这两个值。(如果您有一个公式需要格里高利历年,月和日,您甚至不需要执行该timetuple步骤。)如果您无法确定从那里去哪里,请询问更多详细信息。

如果您没有公式,甚至可能已经有了公式,那么最好的办法就是在PyPI和ActiveState周围查找预先存在的模块。例如,快速搜索出现了一个名为的东西jdcal。我以前从未见过它,但是可以快速pip install jdcal简短地阅读自述文件,并且能够做到这一点:

>>> sum(jdcal.gcal2jd(dt.year, dt.month, dt.day))
2456238.5

这与USN朱利安日期转换器给我的结果相同。

如果您想要整数儒略日,而不是分数儒略日,则必须决定要舍入的方向-朝0,朝负无穷大,将正午舍入到第二天,将正午舍入到偶数天,等等。(请注意,朱利安日期的定义是从4713BC年1月1日中午开始,所以2012年11月7日的一半是2456238,另一半是2456239,只有您知道您想要哪个……例如,朝0舍入:

>>> int(sum(jdcal.gcal2jd(dt.year, dt.month, dt.day)))
2456238


 类似资料:
  • 有没有办法只从JavaScript中的API中获取日期字符串的前四个字符? 我正在使用电影数据库,它允许我获取电影的确切上映日期。例如,我为“海底总动员”获取以下数据对象: 我在Movies.js组件中添加了以下代码< code > 但是有没有办法只提取前四个字符(2003)并只返回该字符?或者更好的是,有没有办法只提取发行年份?

  • 问题内容: 有一个名为myDate的文本字段。该字段可以包含1)“结束 某日期 的会计年度”或2)“ dateA 到” dateB ”。 在情况1)中,我想将字段date1 =设置为 someDate 。 在情况2)中,我要设置字段date1 = dateA 和字段date2 = dateB 。 所有日期( someDate , dateA , dateB )都可以写为2000年1月1日,2000

  • 问题内容: 我需要一个mysql查询来从数据库表中的以下日期格式中提取年份。 例如: 以下查询不起作用 列类型为varchar。有什么办法解决这个问题? 问题答案: 由于您的subdateshow是VARCHAR列,而不是正确的DATE,TIMESTAMP或DATETIME列,因此必须在使用YEAR之前将字符串转换为日期: 参见http://dev.mysql.com/doc/refman/5.5

  • 问题内容: 我正在尝试创建一个查询,该查询仅从所选日期获得年份。即返回,但我只想。我怎样才能只得到一年?我知道可以使用该功能,但不确定如何使用。 问题答案: 编辑:由于后标记’oracle’,前两个查询变得无关紧要,剩下第三个查询为oracle。 对于MySQL: 编辑:无论如何,如果您的日期是一个字符串,让我们将其转换为正确的日期格式。并从中选择年份。 由于您正在尝试使用Toad,因此可以检查以

  • 我正在尝试用C语言输出日历,我想我已经把格式弄下来了,但我遇到了麻烦: 正在验证用户输入(我已经注释掉了潜在的解决方案,但它还没有正确编译。它总是打印“所选的年/月无效”,并且break语句不起作用。) 在一周的正确日期开始日历日(2018年5月从周二开始,而不是周日) 我目前的输出: 我想要的输出: 这是我的程序:

  • 问题内容: 我在String上有个约会,像这样: 我想将其划分为: 做这个的最好方式是什么? 问题答案: 在Java中拆分字符串的一种方法是使用.split(“ regex”),该方法根据提供的模式拆分字符串,并返回String数组。 获取当前日期:您还可以通过更改传递给SimpleDateFormat的值来更改日期格式。不要忘记进口。