将python datetime对象格式化为参数

杰西·赖希(Jesse Reich)

python较新,但尝试将其用于卫星轨道分析。我真的没有得到datetime对象和方法。我希望能够将datetime对象传递给一个函数,该函数接受与datetime基本上相同的格式(年,月,日,小时,分钟,秒)的参数。以下作品的代码,但有是一个更好的办法。请赐教。谢谢!

import jday
import datetime

jdate = jday.JD(2015,12,1,22,8,0) # example

now1 = datetime.datetime.now().strftime("%Y,%m,%d,%H,%M,%S")
now2 = now1.split(",")
now3 = [int(i) for i in now2]
jdatenow = jday.JD(*now3)
print jdatenow

jday模块是从David Vallado的Astrodynamics源代码的Matlab移植过来的。

import math as m

def JD(yr, mon, day, hr, min, sec):
        jd = 367.0 * yr - m.floor( 
        (7 * (yr + m.floor( (mon + 9) / 12.0) ) ) * 0.25 ) + m.floor(
        275 * mon / 9.0 ) + day + 1721013.5 + (
        (sec/60.0 + min ) / 60.0 + hr ) / 24.0
        return jd
Arcseldon

鉴于您已经移植了JD代码,因此可以将其作为模块jday进行控制,也许您需要的是装饰器。这样做的明显好处是不会破坏该函数的原始签名(对于现有的客户端代码),但是可以根据您的要求增加日期参数的便利性。

还创建了一个jday2模块,该模块与原始jday模块相同,但其JD()函数改为直接接受日期对象。如果不需要任何向后兼容性,这是最简单的解决方案。

请参见下面的工作示例代码:

jday.py

import math as m
import functools

def date_support_wrapper(f):
    """ Wraps JD and provides a way to pass a date param

    :param f: the original function
    :return: the wrapper around the original function
    """

    @functools.wraps(f)
    def wrap(*args, **kwargs):
        if 'date' in kwargs:
            d = kwargs['date']
            return f(yr=d.year, mon=d.month, day=d.day, hr=d.hour, min=d.minute, sec=d.second)

        return f(*args, **kwargs)

    return wrap


@date_support_wrapper
def JD(yr, mon, day, hr, min, sec):
    jd = 367.0 * yr - m.floor(
        (7 * (yr + m.floor((mon + 9) / 12.0))) * 0.25) + m.floor(
        275 * mon / 9.0) + day + 1721013.5 + (
                                                 (sec / 60.0 + min) / 60.0 + hr) / 24.0
    return jd

jday2.py

import math as m

def JD(dt):
    """ Same calculation as JD but accepts a date object argument

    :param dt: the date object
    :return: the JD result
    """
    yr, mon, day, hr, min, sec = dt.year, dt.month, dt.day, dt.hour, dt.minute, dt.second
    jd = 367.0 * yr - m.floor(
        (7 * (yr + m.floor((mon + 9) / 12.0))) * 0.25) + m.floor(
        275 * mon / 9.0) + day + 1721013.5 + (
                                                 (sec / 60.0 + min) / 60.0 + hr) / 24.0
    return jd

以及示例客户端代码:

client.py

import datetime
import jday
import jday2

# The date we are interested in
a = dict(year=2015, month=12, day=1, hour=22, minute=8, second=0)
dt = datetime.datetime(**a)  # 2015-12-01 22:08:00

# The original signature of the function
jdate1 = jday.JD(a['year'], a["month"], a["day"], a["hour"], a["minute"], a["second"])
# 2457358.422222222

# The new signature that accepts a normal date object
# Note that we use keyword "date" argument
jdate2 = jday.JD(date=dt)
# 2457358.422222222

# The new signature that accepts a normal date object
jdate3 = jday2.JD(dt)
# 2457358.422222222

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

将python datetime对象格式化为参数

来自分类Dev

将数据数组格式化为对象

来自分类Dev

将日期对象格式化为特定格式

来自分类Dev

将JavaScript Date对象格式化为特定格式

来自分类Dev

如何将数组的对象格式化为新对象

来自分类Dev

将DateTime格式化为字符串

来自分类Dev

将Excel字段格式化为DateTime的热键?

来自分类Dev

如何将参数格式化为函数

来自分类Dev

将Javascript对象格式化为新数组

来自分类Dev

使用linq将数据格式化为新对象

来自分类Dev

如何将JSON对象格式化为Pandas Dataframe?

来自分类Dev

将JSON数据重新格式化为Javascript对象

来自分类Dev

将字符串日期格式化为日期对象

来自分类Dev

JavaScript 将字符串格式化为数组对象

来自分类Dev

如何将 JSON 格式化为单个 javascript 对象

来自分类Dev

将数字格式化为 2 位数:“需要对象”

来自分类Dev

错误:无法将给定的对象格式化为日期,将日期格式化为新格式(Android)

来自分类Dev

将存储在mysql(utc格式)中的momentjs datetime格式化为Local DateTime

来自分类Dev

Python:使用markit on demand api将JSON参数正确格式化为正确的http请求

来自分类Dev

如何将UTC中的datetime格式化为本地时间格式?

来自分类Dev

如何使用DateFormat类将DateTime对象格式化为带有字母h(例如13h45)的字符串?

来自分类Dev

将日期格式化为可读格式

来自分类Dev

将秒格式化为可读格式

来自分类Dev

如何通过JSON将Java的日期对象从Java GregorianCalendar对象格式化为String

来自分类Dev

将长度可变的深度嵌套JSON对象重新格式化为一组简化的对象

来自分类Dev

Python-将JSON输出格式化为文件

来自分类Dev

Python制表将字符格式化为单独的列

来自分类Dev

Python-将JSON输出格式化为文件

来自分类Dev

将Python输出格式化为行

Related 相关文章

  1. 1

    将python datetime对象格式化为参数

  2. 2

    将数据数组格式化为对象

  3. 3

    将日期对象格式化为特定格式

  4. 4

    将JavaScript Date对象格式化为特定格式

  5. 5

    如何将数组的对象格式化为新对象

  6. 6

    将DateTime格式化为字符串

  7. 7

    将Excel字段格式化为DateTime的热键?

  8. 8

    如何将参数格式化为函数

  9. 9

    将Javascript对象格式化为新数组

  10. 10

    使用linq将数据格式化为新对象

  11. 11

    如何将JSON对象格式化为Pandas Dataframe?

  12. 12

    将JSON数据重新格式化为Javascript对象

  13. 13

    将字符串日期格式化为日期对象

  14. 14

    JavaScript 将字符串格式化为数组对象

  15. 15

    如何将 JSON 格式化为单个 javascript 对象

  16. 16

    将数字格式化为 2 位数:“需要对象”

  17. 17

    错误:无法将给定的对象格式化为日期,将日期格式化为新格式(Android)

  18. 18

    将存储在mysql(utc格式)中的momentjs datetime格式化为Local DateTime

  19. 19

    Python:使用markit on demand api将JSON参数正确格式化为正确的http请求

  20. 20

    如何将UTC中的datetime格式化为本地时间格式?

  21. 21

    如何使用DateFormat类将DateTime对象格式化为带有字母h(例如13h45)的字符串?

  22. 22

    将日期格式化为可读格式

  23. 23

    将秒格式化为可读格式

  24. 24

    如何通过JSON将Java的日期对象从Java GregorianCalendar对象格式化为String

  25. 25

    将长度可变的深度嵌套JSON对象重新格式化为一组简化的对象

  26. 26

    Python-将JSON输出格式化为文件

  27. 27

    Python制表将字符格式化为单独的列

  28. 28

    Python-将JSON输出格式化为文件

  29. 29

    将Python输出格式化为行

热门标签

归档