<i id='jimT2'><tr id='jimT2'><dt id='jimT2'><q id='jimT2'><span id='jimT2'><b id='jimT2'><form id='jimT2'><ins id='jimT2'></ins><ul id='jimT2'></ul><sub id='jimT2'></sub></form><legend id='jimT2'></legend><bdo id='jimT2'><pre id='jimT2'><center id='jimT2'></center></pre></bdo></b><th id='jimT2'></th></span></q></dt></tr></i><div id='jimT2'><tfoot id='jimT2'></tfoot><dl id='jimT2'><fieldset id='jimT2'></fieldset></dl></div>

    <small id='jimT2'></small><noframes id='jimT2'>

      <bdo id='jimT2'></bdo><ul id='jimT2'></ul>

      <legend id='jimT2'><style id='jimT2'><dir id='jimT2'><q id='jimT2'></q></dir></style></legend>
      <tfoot id='jimT2'></tfoot>

        对于 1970-01-01 之前的日期,Windows 上 datetime time

        时间:2023-09-14

          <tbody id='FmkBb'></tbody>

          <tfoot id='FmkBb'></tfoot>

          <small id='FmkBb'></small><noframes id='FmkBb'>

                <i id='FmkBb'><tr id='FmkBb'><dt id='FmkBb'><q id='FmkBb'><span id='FmkBb'><b id='FmkBb'><form id='FmkBb'><ins id='FmkBb'></ins><ul id='FmkBb'></ul><sub id='FmkBb'></sub></form><legend id='FmkBb'></legend><bdo id='FmkBb'><pre id='FmkBb'><center id='FmkBb'></center></pre></bdo></b><th id='FmkBb'></th></span></q></dt></tr></i><div id='FmkBb'><tfoot id='FmkBb'></tfoot><dl id='FmkBb'><fieldset id='FmkBb'></fieldset></dl></div>
                • <bdo id='FmkBb'></bdo><ul id='FmkBb'></ul>
                  <legend id='FmkBb'><style id='FmkBb'><dir id='FmkBb'><q id='FmkBb'></q></dir></style></legend>
                • 本文介绍了对于 1970-01-01 之前的日期,Windows 上 datetime timestamp() 的解决方法的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

                  问题描述

                  我目前正在尝试通过将日期转换为时间戳来在数据集中生成数字特征.如果在 Mac 上运行,它可以完美运行,在 Windows 上它会抛出:

                  I am currently trying to generate numerical features in a dataset by converting the dates to timestamps. If run on Mac, it works flawlessly, on Windows it throws an:

                  OS Error: [Errno 22] Invalid argument
                  

                  这可能是由于 Windows 不支持 unix 时间戳1970-01-01 之前.我的日期从 1955 年开始.这是我的代码:

                  which is probably due to Windows not supporting unix timestamps from before 1970-01-01. I have dates from 1955 upwards. Here is my code:

                  import time
                  import datetime
                  
                  current_timestamp = time.time()
                  df.loc[:, "FEATURE_num"] = df["FEATURE"].apply(lambda d: datetime.datetime.strptime(d, '%Y-%m-%d').timestamp() if isinstance(d, str) else current_timestamp)
                  

                  我在某处看到有人建议使用 datetime.timedelta(),但我不知道如何集成它.

                  I somewhere saw suggested to maybe use datetime.timedelta(), but I couldn't figure out how to integrate it.

                  推荐答案

                  你可以通过(隐式)使用 datetime.timedelta 计算一个公历"时间戳适用于从 1582 年 10 月 15 日到现在(或您想使用的其他纪元")的日期.

                  You could do it by (implicitly) using datetime.timedelta to calculate a "Gregorian" timestamp that would be valid for dates from 1582-Oct-15 to the present (or some other "epoch" you would like to use).

                  正如函数的文档字符串所示,默认情况下,日期字符串将使用 '%Y-%m-%d' strptime-like 格式字符串参数,但可以覆盖.

                  As the function's docstring indicates, date strings will, by default, be parsed using a '%Y-%m-%d' strptime-like format string parameter, but that can be overridden.

                  from datetime import datetime
                  
                  
                  GREGORIAN_EPOCH = datetime.strptime('1582-10-15', '%Y-%m-%d')
                  
                  
                  def gregorian_timestamp(date, format='%Y-%m-%d'):
                      """ Calculate timestamp using start of Gregorian calender as epoch.
                  
                          The date parameter can be either a string or a datetime.datetime
                          object. Strings will be parsed using the '%Y-%m-%d' format by default
                          unless a different one is specfied via the optional format parameter.
                      """
                      try:
                          date = datetime.strptime(date, format)
                      except TypeError:
                          pass
                      return (date - GREGORIAN_EPOCH).total_seconds()  # The timedelta in seconds.
                  
                  
                  if __name__ == '__main__':
                  
                      current_date = datetime.now()
                      timestamp = gregorian_timestamp(current_date)
                      print('gregorian timestamp:', timestamp)  # -> gregorian timestamp: 13768250461.136208
                  
                      timestamp = gregorian_timestamp('1970-01-01')
                      print('gregorian timestamp:', timestamp)  # -> gregorian timestamp: 12219292800.0
                  
                      timestamp = gregorian_timestamp('1955-02-28')
                      print('gregorian timestamp:', timestamp)  # -> gregorian timestamp: 11750918400.0
                  
                      timestamp = gregorian_timestamp('1582-10-15')
                      print('gregorian timestamp:', timestamp)  # -> gregorian timestamp: 0.0
                  

                  这篇关于对于 1970-01-01 之前的日期,Windows 上 datetime timestamp() 的解决方法的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持html5模板网!

                  上一篇:如何在 Pandas 中转换 datetime 列的时区? 下一篇:如何使用带有 Pandas 的时间戳按小时对数据帧进行

                  相关文章

                  最新文章

                  <small id='fwnbn'></small><noframes id='fwnbn'>

                  1. <legend id='fwnbn'><style id='fwnbn'><dir id='fwnbn'><q id='fwnbn'></q></dir></style></legend>

                        <bdo id='fwnbn'></bdo><ul id='fwnbn'></ul>
                    1. <tfoot id='fwnbn'></tfoot>
                    2. <i id='fwnbn'><tr id='fwnbn'><dt id='fwnbn'><q id='fwnbn'><span id='fwnbn'><b id='fwnbn'><form id='fwnbn'><ins id='fwnbn'></ins><ul id='fwnbn'></ul><sub id='fwnbn'></sub></form><legend id='fwnbn'></legend><bdo id='fwnbn'><pre id='fwnbn'><center id='fwnbn'></center></pre></bdo></b><th id='fwnbn'></th></span></q></dt></tr></i><div id='fwnbn'><tfoot id='fwnbn'></tfoot><dl id='fwnbn'><fieldset id='fwnbn'></fieldset></dl></div>