datetime, Timestamp 및 datetime64 간 변환


290

numpy.datetime64객체를 datetime.datetime(또는 Timestamp) 로 어떻게 변환 합니까?

다음 코드에서는 datetime, timestamp 및 datetime64 객체를 만듭니다.

import datetime
import numpy as np
import pandas as pd
dt = datetime.datetime(2012, 5, 1)
# A strange way to extract a Timestamp object, there's surely a better way?
ts = pd.DatetimeIndex([dt])[0]
dt64 = np.datetime64(dt)

In [7]: dt
Out[7]: datetime.datetime(2012, 5, 1, 0, 0)

In [8]: ts
Out[8]: <Timestamp: 2012-05-01 00:00:00>

In [9]: dt64
Out[9]: numpy.datetime64('2012-05-01T01:00:00.000000+0100')

참고 : 타임 스탬프에서 날짜 / 시간을 쉽게 얻을 수 있습니다.

In [10]: ts.to_datetime()
Out[10]: datetime.datetime(2012, 5, 1, 0, 0)

그러나 우리는 어떻게 추출 할 datetime또는 TimestampA로부터 numpy.datetime64( dt64)?

.

업데이트 : 내 데이터 세트의 다소 불쾌한 예 (아마도 동기 부여 예)는 다음과 같습니다.

dt64 = numpy.datetime64('2002-06-28T01:00:00.000000000+0100')

이어야 datetime.datetime(2002, 6, 28, 1, 0)하고 길지 않아야합니다 (!) ( 1025222400000000000L) ...


2
당신은 아마 받아 들여야한다 @Wes 맥키 니의 대답은 훨씬 짧은이며, 최근에 작업을해야 numpy, pandas버전.
jfs

@JFSebastian Hmmm은 대답이 "np.datetime에서 datetime으로 이동하지 마십시오"를 의미합니다 ... pd.Timestamp를 사용하십시오 (어쨌든 datetime의 하위 클래스이므로) 또는 실제로 사용해야합니다 pd.Timestamp(dt64).to_datetime(). 나는 여전히 이것에 대해 약간 불만족하지만 확실히 Wes는 내 오래된 문제에 덜 구체적입니다 (그리고 세상에 더 좋습니다)! 답변 해 주셔서 감사합니다. :)
Andy Hayden

귀하의 질문은 말한다 "또는 Timestamp" 하고 TimestampA는 datetime:) 어쨌든 (의 서브 클래스)
JFS

3
2017 년 에이 질문에 온 사람들은 datetime, datetime64 및 Timestamps에 대한 자세한 자습서를 보려면 아래 답변을 참조하십시오. stackoverflow.com/a/46921593/3707607
Ted Petrou

답변:


132

numpy.datetime64UTC로 시간을 나타내는 datetime 객체 로 변환하려면 numpy-1.8다음 을 수행하십시오 .

>>> from datetime import datetime
>>> import numpy as np
>>> dt = datetime.utcnow()
>>> dt
datetime.datetime(2012, 12, 4, 19, 51, 25, 362455)
>>> dt64 = np.datetime64(dt)
>>> ts = (dt64 - np.datetime64('1970-01-01T00:00:00Z')) / np.timedelta64(1, 's')
>>> ts
1354650685.3624549
>>> datetime.utcfromtimestamp(ts)
datetime.datetime(2012, 12, 4, 19, 51, 25, 362455)
>>> np.__version__
'1.8.0.dev-7b75899'

위의 예제는 순진한 datetime 객체 np.datetime64를 UTC로 시간으로 해석한다고 가정합니다 .


datetime을 np.datetime64로 변환하고 뒤로 ( numpy-1.6) 변환하려면

>>> np.datetime64(datetime.utcnow()).astype(datetime)
datetime.datetime(2012, 12, 4, 13, 34, 52, 827542)

단일 np.datetime64 객체와 np.datetime64의 numpy 배열 모두에서 작동합니다.

np.datetime64를 np.int8, np.int16 등과 같은 방식으로 생각하고 동일한 메소드를 적용하여 int, datetime 및 해당하는 numpy 객체와 같은 Python 객체 사이를 변환하십시오.

"불쾌한 예"가 올바르게 작동합니다.

>>> from datetime import datetime
>>> import numpy 
>>> numpy.datetime64('2002-06-28T01:00:00.000000000+0100').astype(datetime)
datetime.datetime(2002, 6, 28, 0, 0)
>>> numpy.__version__
'1.6.2' # current version available via pip install numpy

설치된 long값을 다음 numpy-1.8.0과 같이 재현 할 수 있습니다 .

pip install git+https://github.com/numpy/numpy.git#egg=numpy-dev

같은 예 :

>>> from datetime import datetime
>>> import numpy
>>> numpy.datetime64('2002-06-28T01:00:00.000000000+0100').astype(datetime)
1025222400000000000L
>>> numpy.__version__
'1.8.0.dev-7b75899'

그것은 반환 long을위한 때문에 numpy.datetime64유형 .astype(datetime)에 해당 .astype(object)하는 수익률 파이썬 정수 ( long에) numpy-1.8.

날짜 시간 객체를 얻으려면 다음을 수행하십시오.

>>> dt64.dtype
dtype('<M8[ns]')
>>> ns = 1e-9 # number of seconds in a nanosecond
>>> datetime.utcfromtimestamp(dt64.astype(int) * ns)
datetime.datetime(2002, 6, 28, 0, 0)

초를 직접 사용하는 datetime64를 얻으려면 다음을 수행하십시오.

>>> dt64 = numpy.datetime64('2002-06-28T01:00:00.000000000+0100', 's')
>>> dt64.dtype
dtype('<M8[s]')
>>> datetime.utcfromtimestamp(dt64.astype(int))
datetime.datetime(2002, 6, 28, 0, 0)

NumPy와 문서는 날짜 시간 API 실험과 미래 NumPy와 버전에서 변경 될 수 있음을 말한다.


1
나는이 항상 작동하지 않는 것 같군요 : 예 dt64 = numpy.datetime64('2002-06-28T01:00:00.000000000+0100')(긴 제공 1025222400000000000L) (!)
앤디 헤이든

@ hayden : 시도하십시오 type(dt64). dt64.astype(datetime) == datetime.utcfromtimestamp(dt64.astype(int)*1e-6)
jfs

@JFSebastian type(dt64)numpy.datetime64( dt64.astype(datetime)는) 같은 긴 국제 ... : s
Andy Hayden

@ hayden : 너의 numpy 버전은 무엇입니까? 광산 : numpy.__version__->'1.6.1'
jfs

버전 1.8.0 (python 2.7.3), 그것이 효과가 있다면 그것은 내 시스템의 버그라고 제안합니다!
Andy Hayden

212

pd.Timestamp 생성자를 사용할 수 있습니다. 다음 다이어그램은이 질문과 관련 질문에 유용 할 수 있습니다.

시간 표현 간의 변환


2
좋은!!! (가치는 내가 많은 일이 :) 여기에 수행 된이 질문에 쓴 이후 상황이 개선 된 것을 언급)
앤디 헤이든을

106
이 다이어그램을 보면이 모든 시간에 근본적으로 문제가 있음을 알 수 있습니다.
demented hedgehog

4
pd.to_datetime이 ms 또는 ns의 수를 지정하면 TimeStamp를 생성하지만 datetime.datetime을 제공하면 datetime.datetime을 생성하거나 np.datetime64를 제공하면 np.datetime64를 생성한다는 것은 매우 혼란 스럽습니다. 이것이 합리적이라고 생각합니까?
Mr.WorshipMe

7
@ Mr.WorshipMe이 다이어그램은 업데이트해야합니다. pd.to_datetime모든 것을로 변환합니다 pd.Timestamp. pd.Timestamp객체 메소드가 to_pydatetimeA를 다시 되돌릴 수 datetime.datetime객체와 to_datetime64변환하는 방법을 np.datetime64.
Ted Petrou

2
이 사진의 해상도를 높이려면 어떻게해야합니까?
user3226167

137

지옥에 온 걸 환영 해

datetime64 객체를 pandas.Timestamp다음으로 전달할 수 있습니다 .

In [16]: Timestamp(numpy.datetime64('2012-05-01T01:00:00.000000'))
Out[16]: <Timestamp: 2012-05-01 01:00:00>

NumPy 1.6.1에서는 이것이 제대로 작동하지 않는 것으로 나타났습니다.

numpy.datetime64('2012-05-01T01:00:00.000000+0100')

또한 pandas.to_datetime사용할 수 있습니다 (개발 버전이 아니므로 v0.9.1을 확인하지 않았습니다).

In [24]: pandas.to_datetime('2012-05-01T01:00:00.000000+0100')
Out[24]: datetime.datetime(2012, 5, 1, 1, 0, tzinfo=tzoffset(None, 3600))

5
당신은 그 언급해야한다 issubclass(pd.Timestamp, datetime)이다 True. 그리고 Timestamp클래스 자체에는 to_datetime()메소드가 있습니다.
jfs

7
pd.to_datetime('2012-05-01T01:00:00.000000+0100')Timestamp('2012-05-01 00:00:00')적어도 pandas로 반환합니다 0.17.1.
Anton Protopopov 2018 년

96

파이썬의 datetime 모듈, numpy의 datetime64 / timedelta64 및 팬더의 Timestamp / Timedelta 객체 사이의 관계를 더 잘 설명하기 위해 더 통합 된 노력이있을 수 있다고 생각합니다.

파이썬의 날짜 / 시간 표준 라이브러리

날짜 시간 표준 라이브러리에는 네 가지 주요 객체가 있습니다

  • 시간-시간, 분, 초 및 마이크로 초로 측정 된 시간 만
  • 날짜-년, 월 및 일만
  • datetime-시간 및 날짜의 모든 구성 요소
  • timedelta-최대 일 단위의 시간

이 네 가지 객체를 만듭니다

>>> import datetime
>>> datetime.time(hour=4, minute=3, second=10, microsecond=7199)
datetime.time(4, 3, 10, 7199)

>>> datetime.date(year=2017, month=10, day=24)
datetime.date(2017, 10, 24)

>>> datetime.datetime(year=2017, month=10, day=24, hour=4, minute=3, second=10, microsecond=7199)
datetime.datetime(2017, 10, 24, 4, 3, 10, 7199)

>>> datetime.timedelta(days=3, minutes = 55)
datetime.timedelta(3, 3300)

>>> # add timedelta to datetime
>>> datetime.timedelta(days=3, minutes = 55) + \
    datetime.datetime(year=2017, month=10, day=24, hour=4, minute=3, second=10, microsecond=7199)
datetime.datetime(2017, 10, 27, 4, 58, 10, 7199)

NumPy의 datetime64 및 timedelta64 객체

NumPy에는 별도의 날짜 및 시간 객체가 없으며 단일 시점을 나타내는 단일 datetime64 객체 만 있습니다. datetime 모듈의 datetime 객체는 마이크로 초 정밀도 (백만 분의 1 초)입니다. NumPy의 datetime64 객체를 사용하면 시간에서 아토초 (10 ^ -18)까지 정밀도를 설정할 수 있습니다. 생성자가 더 유연하고 다양한 입력을 취할 수 있습니다.

NumPy의 datetime64 및 timedelta64 객체 생성

단위 문자열을 정수로 전달하십시오. 여기에서 모든 장치를 참조하십시오 . 1970 년 1 월 1 일, 유닉스 시대 이후 많은 단위로 변환되었습니다.

>>> np.datetime64(5, 'ns') 
numpy.datetime64('1970-01-01T00:00:00.000000005')

>>> np.datetime64(1508887504, 's')
numpy.datetime64('2017-10-24T23:25:04')

ISO 8601 형식 인 한 문자열을 사용할 수도 있습니다.

>>> np.datetime64('2017-10-24')
numpy.datetime64('2017-10-24')

타임 델타에는 단일 단위가 있습니다

>>> np.timedelta64(5, 'D') # 5 days
>>> np.timedelta64(10, 'h') 10 hours

두 개의 datetime64 객체를 빼서 만들 수도 있습니다

>>> np.datetime64('2017-10-24T05:30:45.67') - np.datetime64('2017-10-22T12:35:40.123')
numpy.timedelta64(147305547,'ms')

팬더 타임 스탬프 및 타임 델타가 NumPy 위에 훨씬 더 많은 기능을 구축

팬더 타임 스탬프는 날짜 시간과 매우 유사하지만 기능이 훨씬 많은 순간입니다. 당신도 그들을 만들 수 있습니다 pd.Timestamp또는 pd.to_datetime.

>>> pd.Timestamp(1239.1238934) #defautls to nanoseconds
Timestamp('1970-01-01 00:00:00.000001239')

>>> pd.Timestamp(1239.1238934, unit='D') # change units
Timestamp('1973-05-24 02:58:24.355200')

>>> pd.Timestamp('2017-10-24 05') # partial strings work
Timestamp('2017-10-24 05:00:00')

pd.to_datetime 매우 유사하게 작동하며 (몇 가지 옵션이 더 있음) 문자열 목록을 타임 스탬프로 변환 할 수 있습니다.

>>> pd.to_datetime('2017-10-24 05')
Timestamp('2017-10-24 05:00:00')

>>> pd.to_datetime(['2017-1-1', '2017-1-2'])
DatetimeIndex(['2017-01-01', '2017-01-02'], dtype='datetime64[ns]', freq=None)

Python datetime을 datetime64 및 Timestamp로 변환

>>> dt = datetime.datetime(year=2017, month=10, day=24, hour=4, 
                   minute=3, second=10, microsecond=7199)
>>> np.datetime64(dt)
numpy.datetime64('2017-10-24T04:03:10.007199')

>>> pd.Timestamp(dt) # or pd.to_datetime(dt)
Timestamp('2017-10-24 04:03:10.007199')

numpy datetime64를 datetime 및 Timestamp로 변환

>>> dt64 = np.datetime64('2017-10-24 05:34:20.123456')
>>> unix_epoch = np.datetime64(0, 's')
>>> one_second = np.timedelta64(1, 's')
>>> seconds_since_epoch = (dt64 - unix_epoch) / one_second
>>> seconds_since_epoch
1508823260.123456

>>> datetime.datetime.utcfromtimestamp(seconds_since_epoch)
>>> datetime.datetime(2017, 10, 24, 5, 34, 20, 123456)

타임 스탬프로 변환

>>> pd.Timestamp(dt64)
Timestamp('2017-10-24 05:34:20.123456')

타임 스탬프에서 datetime 및 datetime64로 변환

팬더 타임 스탬프가 매우 강력하기 때문에 이것은 매우 쉽습니다.

>>> ts = pd.Timestamp('2017-10-24 04:24:33.654321')

>>> ts.to_pydatetime()   # Python's datetime
datetime.datetime(2017, 10, 24, 4, 24, 33, 654321)

>>> ts.to_datetime64()
numpy.datetime64('2017-10-24T04:24:33.654321000')

3
datetime에 대한 numpy가 여전히 어려워하는 방법이 미친 짓입니다 ... 더 나은 방법이 없습니까? 이것은 좋은 대답입니다. 컴퓨터로 다른 사람들을 더 깊이 읽으려면 최상위 수준으로 옮기는 것에 대해 생각하고 있습니다.
Andy Hayden

뭐가 그렇게 기발한가? Pandas Timestamps는 잘 작동하며 상당히 간단합니다.
Ted Petrou

2
날짜 시간에 못생긴.
Andy Hayden

1
나는 이것이 내가 본 최고의 답변이라고 생각합니다. Excel, VBA, SAS 또는 SQL에서 나온 파이썬은 날짜 / 시간을 다루는 "단방향"이 아니기 때문에 이상하게 보입니다. 파이썬이나 R의 많은 것들과 마찬가지로 좋아하는 메소드 / 모듈 / 클래스를 선택하고 고수해야합니다.
Sean McCarthy

놀라운 답변
gioxc88

29
>>> dt64.tolist()
datetime.datetime(2012, 5, 1, 0, 0)

의 경우 DatetimeIndex, 객체 tolist목록을 반환 datetime합니다. 단일 datetime64객체의 경우 단일 객체를 반환 datetime합니다.


난 정말 모든 방법을 시도해야했습니다 :) (나는이 하나를 잡고 얼마나 오랫동안 충격을 받았다) 감사합니다
Andy Hayden

5
@ hayden 당신이 그것의 스칼라 / 0-d 배열을 알고 있다면 오히려 .item()훨씬 더 명시 적으로 사용할 것입니다 (그리고 아무도 목록을 반환해야한다고 주장 할 수는 없습니다).
seberg December

1
이것이 항상 작동하지 않는 것 같습니다. 예를 들어 dt64 = numpy.datetime64('2002-06-28T01:00:00.000000000+0100'), 긴 ( 1025222400000000000L) (!) 을 제공합니다 .
Andy Hayden

4
@hayden :에 의해 반환되는 유형 .item()(@seberg 제안은), .tolist()단위 사용 예를 들어, datetime64에 따라 달라집니다 D생산 datetime.date(), us(마이크로 초) 생산 datetime.datetime(), ns(나노초) 생산을 long. 그리고 단위는 입력 값, 예를 들어, numpy.datetime64('2012-05-01')용도 'D', numpy.datetime64('2012-05-01T00:00:00.000')용도 ms, numpy.datetime64('2012-05-01T00:00:00.000000000')용도 에 따라 변경 ns됩니다. 혼란 스러울 경우 문제를 열있습니다 .
jfs

@AndyHayden 동일한 형식이 적용되도록 tolist ()에서 동일한 datetime 요소가 생성되도록 추가 인수 'us'또는 'ms'를 추가 할 수도 있습니다.
NM

11

전체 팬더 시리즈 날짜 시간을 일반 파이썬 날짜 시간으로 변환하려면을 사용할 수도 있습니다 .to_pydatetime().

pd.date_range('20110101','20110102',freq='H').to_pydatetime()

> [datetime.datetime(2011, 1, 1, 0, 0) datetime.datetime(2011, 1, 1, 1, 0)
   datetime.datetime(2011, 1, 1, 2, 0) datetime.datetime(2011, 1, 1, 3, 0)
   ....

또한 시간대를 지원합니다.

pd.date_range('20110101','20110102',freq='H').tz_localize('UTC').tz_convert('Australia/Sydney').to_pydatetime()

[ datetime.datetime(2011, 1, 1, 11, 0, tzinfo=<DstTzInfo 'Australia/Sydney' EST+11:00:00 DST>)
 datetime.datetime(2011, 1, 1, 12, 0, tzinfo=<DstTzInfo 'Australia/Sydney' EST+11:00:00 DST>)
....

참고 : Pandas Series를 사용 to_pydatetime()하는 경우 전체 시리즈를 호출 할 수 없습니다 . .to_pydatetime()목록 이해 또는 이와 유사한 것을 사용하여 각 개별 datetime64 를 호출해야합니다 .

datetimes = [val.to_pydatetime() for val in df.problem_datetime_column]

10

한 가지 옵션은을 사용 str하고 다음과 같이 사용하는 것입니다 to_datetime.

In [11]: str(dt64)
Out[11]: '2012-05-01T01:00:00.000000+0100'

In [12]: pd.to_datetime(str(dt64))
Out[12]: datetime.datetime(2012, 5, 1, 1, 0, tzinfo=tzoffset(None, 3600))

참고 : "오프셋 인식"dt 되기 때문에 같지 않습니다 .

In [13]: pd.to_datetime(str(dt64)).replace(tzinfo=None)
Out[13]: datetime.datetime(2012, 5, 1, 1, 0)

이것은 우아하지 않은 것 같습니다.

.

업데이트 : "불쾌한 예"를 다룰 수 있습니다.

In [21]: dt64 = numpy.datetime64('2002-06-28T01:00:00.000000000+0100')

In [22]: pd.to_datetime(str(dt64)).replace(tzinfo=None)
Out[22]: datetime.datetime(2002, 6, 28, 1, 0)

이 팁을 공유해 주신 Andy에게 감사합니다. 어떤 이유로 든 여기에서 논의 할 때 작동하지 않을 수 있습니다. stackoverflow.com/questions/22825349/…
Amelio Vazquez-Reina

@ user815423426 이것은 결코 강력한 솔루션이 아니 었습니다. 더 일반적으로 작동하도록 형식을 날짜 시간 생성자에 전달할 수 있다고 생각합니다. 그래도 판다 스틱은 아닙니다!
Andy Hayden

8

이 게시물은 4 년 동안 운영되어 왔으며 여전히이 전환 문제로 어려움을 겪고 있습니다. 따라서이 문제는 2017 년에도 여전히 어떤 의미에서 활성화되어 있습니다. 나는 numpy 문서가 간단한 변환 알고리즘을 쉽게 제공하지는 않지만 다른 이야기라고 충격을 받았습니다.

난 단지 모듈을 포함하는 변환을 수행하는 또 다른 방법을 통해 온 numpydatetime는 팬더가 같은 간단한 변환을 위해 수입에 많은 코드가 될 나에게 보인다 가져올 필요가 없습니다. 원본 이 마이크로 초 단위 이면 다른 단위는 정수 타임 스탬프 datetime64.astype(datetime.datetime)를 반환하면 datetime.datetime객체 를 반환 한다는 것을 알았습니다 . 마이크로 초 단위로 먼저 변환하지 않는 한 나노초 단위의 나노초 단위 를 사용하는 Netcdf 파일의 데이터 I / O 용 모듈 을 사용 하여 변환에 실패합니다. 변환 코드의 예는 다음과 같습니다.datetime64xarraydatetime64

import numpy as np
import datetime

def convert_datetime64_to_datetime( usert: np.datetime64 )->datetime.datetime:
    t = np.datetime64( usert, 'us').astype(datetime.datetime)
return t

내 컴퓨터에서만 테스트되었으며 최근 2017 Anaconda 배포판이있는 Python 3.6입니다. 스칼라 변환 만 살펴 보았지만 배열 기반 변환을 확인하지는 않았지만 좋을 것이라고 생각합니다. 또한 numpy datetime64 소스 코드를보고 조작이 의미가 없는지 확인하지 않았습니다.


대단하다. 이것을 만들어 주셔서 감사합니다.
Yu Chen

좋은 물건. 감사합니다.
misantroop

1

나는이 대답에 내가 셀 수있는 것보다 더 많이 돌아 왔으므로 Numpy datetime64값을 Python datetime값으로 변환하는 빠른 작은 클래스를 함께하기로 결정했습니다 . 나는 그것이 다른 사람들을 도울 수 있기를 바랍니다.

from datetime import datetime
import pandas as pd

class NumpyConverter(object):
    @classmethod
    def to_datetime(cls, dt64, tzinfo=None):
        """
        Converts a Numpy datetime64 to a Python datetime.
        :param dt64: A Numpy datetime64 variable
        :type dt64: numpy.datetime64
        :param tzinfo: The timezone the date / time value is in
        :type tzinfo: pytz.timezone
        :return: A Python datetime variable
        :rtype: datetime
        """
        ts = pd.to_datetime(dt64)
        if tzinfo is not None:
            return datetime(ts.year, ts.month, ts.day, ts.hour, ts.minute, ts.second, tzinfo=tzinfo)
        return datetime(ts.year, ts.month, ts.day, ts.hour, ts.minute, ts.second)

나는 이것을 도구 가방에 보관할 것입니다. 무언가가 다시 필요하다는 것을 알려줍니다.


2
당신은 그냥 할 수 있습니다ts.to_pydatetime()
Ted Petrou

0
import numpy as np
import pandas as pd 

def np64toDate(np64):
    return pd.to_datetime(str(np64)).replace(tzinfo=None).to_datetime()

이 함수를 사용하여 Python 기본 날짜 시간 객체를 가져옵니다.


오류가 발생했습니다replace() got an unexpected keyword argument 'tzinfo'
ogogmad

버전 : 0.18.1 (pip show pandas)
Crystal

당신과 동일. . .
ogogmad

그때는 모르겠지만 그것은 매력처럼 작동합니다. pix.toile-libre.org/upload/original/1475645621.png
Crystal

0

일부 솔루션은 나에게 잘 작동하지만 numpy는 일부 매개 변수를 더 이상 사용하지 않습니다. 나를 위해 더 나은 해결책은 날짜를 팬더 날짜 시간으로 읽고 팬더 객체의 연도, 월 및 일을 명시 적으로 나타내는 것입니다. 다음 코드는 가장 일반적인 상황에서 작동합니다.

def format_dates(dates):
    dt = pd.to_datetime(dates)
    try: return [datetime.date(x.year, x.month, x.day) for x in dt]    
    except TypeError: return datetime.date(dt.year, dt.month, dt.day)

-1

실제로 이러한 날짜 / 시간 유형은 모두 어렵고 잠재적으로 문제가 될 수 있습니다 (시간대 정보를주의 깊게 추적해야 함). 여기에 내가 한 일이 있지만, 그 중 적어도 일부가 "디자인에 의한 것이 아님"에 대해 우려하고 있음을 인정합니다. 또한 필요에 따라 조금 더 작게 만들 수 있습니다. numpy.datetime64 dt_a로 시작 :

dt_a

numpy.datetime64 ( '2015-04-24T23 : 11 : 26.270000-0700')

dt_a1 = dt_a.tolist () # UTC로 날짜 시간 객체를 생성하지만 tzinfo는 없습니다.

dt_a1

datetime.datetime (2015, 4, 25, 6, 11, 26, 270000)

# now, make your "aware" datetime:

dt_a2 = datetime.datetime (* list (dt_a1.timetuple () [: 6]) + [dt_a1.microsecond], tzinfo = pytz.timezone ( 'UTC'))

물론 필요에 따라 한 줄로 압축 할 수 있습니다.


표준 시간대 처리 변경 사항에 대한 docs.scipy.org/doc/numpy/reference/…
hpaulj

edit올바른 코드 형식, 따옴표 형식 및 텍스트 형식을 준수 하십시오 . 또한 SO 지침에 따라 적절한 대문자, 문법을 준수하고 오타가 있는지 확인하십시오. 게시 방법코드 샘플
SherylHohman
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.