标签: python-datetime

如何在Matplotlib中处理时区?

我有数据点,其横坐标是datetime.datetime具有时区的对象(它们tzinfo碰巧是bson.tz_util.FixedOffset通过MongoDB获得的).

当我用它们绘图时scatter(),刻度标签的时区是什么?

改变timezonematplotlibrc不改变显示的情节什么(我一定是误解了对时区的讨论的Matplotlib文档中).

我尝试了一点plot()(而不是scatter()).给定一个日期时,它会绘制它并忽略时区.但是,当给定多个日期时,它使用固定的时区,但是如何确定?我在文档中找不到任何内容.

最后,plot_date()应该是这些时区问题解决方案吗?

python timezone plot matplotlib python-datetime

10
推荐指数
2
解决办法
4941
查看次数

我如何检查日期是否在 Python 的范围内?

我正在尝试检查今天的日期(dd-mm-yyyy格式)是否在给定范围内。

我的代码只检查日期,而不是月份或年份......你能帮我看看有什么问题吗?

在这里它工作正常......

import datetime
TODAY_CHECK = datetime.datetime.now()
TODAY_RESULT = ('%s-%s-%s' % (TODAY_CHECK.day, TODAY_CHECK.month, TODAY_CHECK.year))
if '26-11-2017' <= TODAY_RESULT <= '30-11-2017':
    print "PASS!"
else:
    print "YOU SHALL NOT PASS, FRODO."
Run Code Online (Sandbox Code Playgroud)

但是这里不...

import datetime
TODAY_CHECK = datetime.datetime.now()
TODAY_RESULT = ('%s-%s-%s' % (TODAY_CHECK.day, TODAY_CHECK.month, TODAY_CHECK.year))
if '26-11-2017' <= TODAY_RESULT <= '01-12-2017':
    print "PASS!"
else:
    print "YOU SHALL NOT PASS, FRODO."
Run Code Online (Sandbox Code Playgroud)

python datetime python-2.7 python-datetime

10
推荐指数
1
解决办法
2万
查看次数

numpy.longdouble dtype的timedelta错误

我有时间使用dtype numpy.longdouble,当我试图将这些值与timedelta函数一起使用时,我遇到了错误.但是当我把它转换成numpy.float64一切都很好.有人可以解释一下这种行为吗?

import numpy as np
from datetime import timedelta
t1 = np.array([1000], dtype=np.longdouble)
t2 = np.array([1000], dtype=np.float64)

In [166]: timedelta(seconds=t1[0])
TypeError: unsupported type for timedelta seconds component: numpy.float64

In [167]: timedelta(seconds=t2[0])
Out[167]: datetime.timedelta(0, 1000)

In [168]: timedelta(seconds=t1[0].astype(np.float64))
Out[168]: datetime.timedelta(0, 1000)
Run Code Online (Sandbox Code Playgroud)

当我试图看到变量的dtypes时,它们看起来相似但不相同:

In [172]: t1[0].dtype
Out[172]: dtype('float64')

In [173]: t2[0].dtype
Out[173]: dtype('float64')

In [174]: np.longdouble == np.float64
Out[174]: False

In [175]: t1[0].dtype == t2[0].dtype
Out[175]: True
Run Code Online (Sandbox Code Playgroud)

编辑

奇怪的是,它不适用于np.int32和np.int64:

t3 = np.array([1000], dtype=np.int32)
t4 = np.array([1000], …
Run Code Online (Sandbox Code Playgroud)

python types numpy timedelta python-datetime

9
推荐指数
2
解决办法
5147
查看次数

Python Timedelta64 将天转换为月

我有一个 Pandas 数据框,其中有 2 列代表开始时间戳和结束时间戳:

start       end
2016-06-13  2016-07-20
Run Code Online (Sandbox Code Playgroud)

这些列的数据类型是datetime64[ns].

我现在想创建一个新列,显示月份的差异:

start       end         duration
2016-06-13  2016-07-20  1.1
Run Code Online (Sandbox Code Playgroud)

我尝试的是执行以下操作:

df['duration'] = df['end'] - df['start']
Run Code Online (Sandbox Code Playgroud)

结果如下:

start       end         duration
2016-06-13  2016-07-20  37 days 00:00:00.000000000
Run Code Online (Sandbox Code Playgroud)

然后我尝试执行以下操作:

df['duration'] = df['end'] - df['start']).dt.months
Run Code Online (Sandbox Code Playgroud)

但这会产生以下错误

AttributeError:“TimedeltaProperties”对象没有属性“months”

duration该列的数据类型是timedelta64[ns].

我怎样才能达到预期的结果?

python timedelta python-datetime

9
推荐指数
1
解决办法
1万
查看次数

infer_datetime_format 与 parse_date 花费更多时间

我正在浏览熊猫文档。它引用了 在此处输入图片说明

我有一个示例 csv 数据文件。

Date
22-01-1943
15-10-1932
23-11-1910
04-05-2000
02-02-1943
01-01-1943
28-08-1943
31-12-1943
22-01-1943
15-10-1932
23-11-1910
04-05-2000
02-02-1943
01-01-1943
28-08-1943
31-12-1943
22-01-1943
15-10-1932
23-11-1910
04-05-2000
02-02-1943
01-01-1943
28-08-1943
31-12-1943
22-01-1943
15-10-1932
23-11-1910
04-05-2000
02-02-1943
01-01-1943
28-08-1943
31-12-1943
Run Code Online (Sandbox Code Playgroud)

接下来我试过了

In [174]: %timeit df = pd.read_csv("a.csv", parse_dates=["Date"])
1.5 ms ± 178 µs per loop (mean ± std. dev. of 7 runs, 1000 loops each)

In [175]: %timeit df = pd.read_csv("a.csv", parse_dates=["Date"], infer_datetime_format=True)
1.73 ms ± 45 µs per loop (mean ± std. …
Run Code Online (Sandbox Code Playgroud)

python python-3.x python-datetime pandas

9
推荐指数
1
解决办法
366
查看次数

Python Plotly 如何消除蜡烛棒图中的日期时间间隙?

我正在尝试消除烛台中的日期时间间隙(间隙是股市休市的时间段,因此没有数据)。似乎无法找到使用绘图对象的良好解决方案。有没有可行的办法呢?

在此输入图像描述

我的代码如下(使用绘图对象):

import dash
import dash_core_components as dcc
import dash_table
import pandas as pd
import dash_html_components as html
import numpy as np
from dash.dependencies import Output, Input, State
import plotly.graph_objects as go
import yfinance as yf
import plotly.express as px
from datetime import datetime, timedelta
from pytz import timezone
import dash_bootstrap_components as dbc

df= yf.Ticker('aapl')
df = df.history(interval="5m",period="5d")
df["Datetime"] = df.index

trace1 = {
    'x': df.Datetime,
    'open': df.Open,
    'close': df.Close,
    'high': df.High,
    'low': df.Low,
    'type': 'candlestick',
    'name': 'apple,
    'showlegend': False …
Run Code Online (Sandbox Code Playgroud)

python candlestick-chart python-datetime yahoo-finance plotly-dash

9
推荐指数
1
解决办法
6894
查看次数

SqlAlchemy按时差过滤

我是SQLAlchemy的新手(但不是那么新).我正在使用0.9.3版本的项目.我想对SQLite数据库进行查询,过滤结果以获取那些没有时间戳的对象,或者自上次更新后超过24小时(在同一列上).

问题是,我没有确切知道如何实现时间过滤部分,我做了一个IPython Notebook会话,所以人们可以看看尝试寻找我的问题的答案有多长:

在[1]中:

from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy import Column, Unicode, DateTime, Integer, create_engine
from sqlalchemy.orm import sessionmaker, relationship, backref
from datetime import datetime

engine = create_engine('sqlite:///:memory:')
Base = declarative_base()
Session = sessionmaker(bind=engine)
session = Session()
Run Code Online (Sandbox Code Playgroud)

在[2]中:

class Product(Base):
    __tablename__ = "product"

    id = Column(Integer, primary_key=True)
    name = Column(Unicode(140), unique=True, nullable=False)
    department = Column(Unicode(20))
    added = Column(DateTime, default=datetime.now)
    last_time_parsed = Column(DateTime)

    def repr(self):
        return "<Product(name=%s, department=%s, added=%s, last_time_parsed=%s)>" % (
                            self.name, self.department, self.added, self.last_time_parsed)
Run Code Online (Sandbox Code Playgroud)

在[3]中:

# create the …
Run Code Online (Sandbox Code Playgroud)

python time orm sqlalchemy python-datetime

8
推荐指数
1
解决办法
1万
查看次数

datetime.fromtimestamp vs datetime.utcfromtimestamp,哪一个更安全?

我正在从传感器收集一些数据,我从中获取时间戳,如下所示:

   "time": {
            "seconds": 40, 
            "year": 115, 
            "month": 5, 
            "hours": 7, 
            "time": 1434549820776, 
            "date": 17, 
            "minutes": 3, 
            "day": 3, 
            "timezoneOffset": 420
        },
Run Code Online (Sandbox Code Playgroud)

我有一个python脚本来处理来自传感器的数据(传入的数据是json格式),我取值time并转换成可读的时间格式.

我用过datetime.fromtimestamp(1434549820776/1000).strftime('%Y-%m-%d %H:%M:%S'),然后回来了'2015-06-17 15:03:40'

当作为datetime.utcfromtimestamp(1434549820776/1000).strftime('%Y-%m-%d %H:%M:%S') 退换:'2015-06-17 14:03:40'

你可以有一个小时的差异,所以我的问题是哪一个更好用?

python python-datetime

8
推荐指数
2
解决办法
3万
查看次数

在python中添加年份

如果我想在我的程序中添加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()
Run Code Online (Sandbox Code Playgroud)

python datetime python-3.x python-datetime

8
推荐指数
2
解决办法
1万
查看次数

保存本地日期时间将时间偏移 4 分钟

我正在尝试通过以下方式在保存和加载时根据时区修改日期时间:

输入日期时间以及输入时区被发送到服务器,服务器应更新日期时间以反映时区。所以当它保​​存在数据库(PostregSQL)中时,保存的是UTC时间(当然是在时区引起的偏移之后)。

为了反映这一点,这里有一个以相同方式失败的简单示例:

一些进口:

>>> import datetime
>>> import pytz
>>> from apps.myapp.models import Project
Run Code Online (Sandbox Code Playgroud)

创建两个输入:

>>> input_date = timezone.now()
>>> input_date
datetime.datetime(2017, 2, 7, 16, 7, 14, 377429, tzinfo=<UTC>)
>>> current_tz = pytz.timezone('America/New_York')
>>> current_tz
<DstTzInfo 'America/New_York' LMT-1 day, 19:04:00 STD>
Run Code Online (Sandbox Code Playgroud)

如您所见,时区不是5h( 24 - 19 = 5),而是4h56. 在这个阶段我认为没关系,它可能与夏令时有关。

现在我正在替换输入日期的时区:

>>> input_date = input_date.replace(tzinfo=current_tz)
>>> input_date
datetime.datetime(2017, 2, 7, 16, 7, 14, 377429, tzinfo=<DstTzInfo 'America/New_York' LMT-1 day, 19:04:00 STD>)
Run Code Online (Sandbox Code Playgroud)

正如预期的那样,时间没有改变,但时区改变了,这很好。

我将这个值分配给一个项目(launch_date是一种DateTimeField没有任何具体的选项): …

python django timezone python-datetime

8
推荐指数
1
解决办法
1699
查看次数