Hướng dẫn how do i truncate a timestamp in python? - làm cách nào để cắt bớt một dấu thời gian trong python?

Một cách sang trọng để cắt ngắn đối tượng Python

>>> now = datetime.now()
>>> now.date()
datetime.date(2011, 3, 29)
1 là gì?

Trong trường hợp cụ thể này, cho đến ngày. Vì vậy, về cơ bản đặt giờ, phút, giây và micro giây đến 0.

Tôi muốn đầu ra cũng là một đối tượng

>>> now = datetime.now()
>>> now.date()
datetime.date(2011, 3, 29)
1, không phải là một chuỗi.

Hướng dẫn how do i truncate a timestamp in python? - làm cách nào để cắt bớt một dấu thời gian trong python?

Martineau

Huy hiệu vàng 116K2525 gold badges160 silver badges285 bronze badges

Đã hỏi ngày 29 tháng 3 năm 2011 lúc 16:52Mar 29, 2011 at 16:52

Hướng dẫn how do i truncate a timestamp in python? - làm cách nào để cắt bớt một dấu thời gian trong python?

Kyle Brandtkyle BrandtKyle Brandt

25.7K34 Huy hiệu vàng122 Huy hiệu bạc162 Huy hiệu đồng34 gold badges122 silver badges162 bronze badges

0

Tôi nghĩ rằng đây là những gì bạn đang tìm kiếm ...

>>> import datetime
>>> dt = datetime.datetime.now()
>>> dt = dt.replace(hour=0, minute=0, second=0, microsecond=0) # Returns a copy
>>> dt
datetime.datetime(2011, 3, 29, 0, 0)

Nhưng nếu bạn thực sự không quan tâm đến khía cạnh thời gian của mọi thứ, thì bạn thực sự chỉ nên đi qua các đối tượng

>>> now = datetime.now()
>>> now.date()
datetime.date(2011, 3, 29)
3 ...

>>> d_truncated = datetime.date(dt.year, dt.month, dt.day)
>>> d_truncated
datetime.date(2011, 3, 29)

Narfanator

5.4373 Huy hiệu vàng38 Huy hiệu bạc61 Huy hiệu Đồng3 gold badges38 silver badges61 bronze badges

Đã trả lời ngày 29 tháng 3 năm 2011 lúc 17:00Mar 29, 2011 at 17:00

5

Sử dụng

>>> now = datetime.now()
>>> now.date()
datetime.date(2011, 3, 29)
3 không phải
>>> now = datetime.now()
>>> now.date()
datetime.date(2011, 3, 29)
1 nếu bạn không quan tâm đến thời gian.

>>> now = datetime.now()
>>> now.date()
datetime.date(2011, 3, 29)

Bạn có thể cập nhật một DateTime như thế này:

>>> now.replace(minute=0, hour=0, second=0, microsecond=0)
datetime.datetime(2011, 3, 29, 0, 0)

Đã trả lời ngày 29 tháng 3 năm 2011 lúc 16:55Mar 29, 2011 at 16:55

Jochen Ritzeljochen RitzelJochen Ritzel

102K30 Huy hiệu vàng196 Huy hiệu bạc192 Huy hiệu Đồng30 gold badges196 silver badges192 bronze badges

3

Bốn năm sau: Một cách khác, tránh >>> now = datetime.now() >>> now.date() datetime.date(2011, 3, 29) 6

Tôi biết câu trả lời được chấp nhận từ bốn năm trước hoạt động, nhưng điều này có vẻ nhẹ hơn so với sử dụng

>>> now = datetime.now()
>>> now.date()
datetime.date(2011, 3, 29)
6:

dt = datetime.date.today()
dt = datetime.datetime(dt.year, dt.month, dt.day)

Ghi chú

  • Khi bạn tạo một đối tượng
    >>> now = datetime.now()
    >>> now.date()
    datetime.date(2011, 3, 29)
    
    1 mà không chuyển các thuộc tính thời gian cho hàm tạo, bạn sẽ nhận được nửa đêm.
  • Như những người khác đã lưu ý, điều này giả định rằng bạn muốn một đối tượng DateTime để sử dụng sau với TimeDeltas.
  • Tất nhiên, bạn có thể thay thế điều này cho dòng đầu tiên:
    >>> now = datetime.now()
    >>> now.date()
    datetime.date(2011, 3, 29)
    
    9

Đã trả lời ngày 1 tháng 8 năm 2015 lúc 2:29Aug 1, 2015 at 2:29

Hướng dẫn how do i truncate a timestamp in python? - làm cách nào để cắt bớt một dấu thời gian trong python?

zx81zx81zx81

40.3k9 Huy hiệu vàng82 Huy hiệu bạc105 Huy hiệu Đồng9 gold badges82 silver badges105 bronze badges

1

Để có được một nửa đêm tương ứng với một đối tượng DateTime nhất định, bạn có thể sử dụng phương thức

>>> now.replace(minute=0, hour=0, second=0, microsecond=0)
datetime.datetime(2011, 3, 29, 0, 0)
0:

>>> from datetime import datetime, time
>>> dt = datetime.utcnow()
>>> dt.date()
datetime.date(2015, 2, 3)
>>> datetime.combine(dt, time.min)
datetime.datetime(2015, 2, 3, 0, 0)

Ưu điểm so với phương pháp

>>> now.replace(minute=0, hour=0, second=0, microsecond=0)
datetime.datetime(2011, 3, 29, 0, 0)
1 là giải pháp dựa trên ____ 30 sẽ tiếp tục hoạt động ngay cả khi mô-đun
>>> now = datetime.now()
>>> now.date()
datetime.date(2011, 3, 29)
1 giới thiệu hỗ trợ nano giây.

>>> now.replace(minute=0, hour=0, second=0, microsecond=0)
datetime.datetime(2011, 3, 29, 0, 0)
4 có thể được bảo tồn nếu cần thiết nhưng phần bù UTC có thể khác nhau vào nửa đêm, ví dụ, do quá trình chuyển đổi DST và do đó một giải pháp ngây thơ (cài đặt thuộc tính thời gian ____34) có thể thất bại. Xem làm thế nào để tôi có được thời gian UTC của Mid Midnight cho một múi giờ nhất định?

Đã trả lời ngày 4 tháng 2 năm 2015 lúc 0:10Feb 4, 2015 at 0:10

JFSJFSjfs

384K183 Huy hiệu vàng949 Huy hiệu bạc1622 Huy hiệu Đồng183 gold badges949 silver badges1622 bronze badges

1

Bạn không thể cắt ngắn một đối tượng DateTime vì nó là bất biến.

Tuy nhiên, đây là một cách để xây dựng một DateTime mới với các trường 0 giờ, phút, thứ hai và micro, mà không vứt bỏ ngày ban đầu hoặc tzinfo:

newdatetime = now.replace(hour=0, minute=0, second=0, microsecond=0)

Đã trả lời ngày 29 tháng 3 năm 2011 lúc 17:10Mar 29, 2011 at 17:10

Hướng dẫn how do i truncate a timestamp in python? - làm cách nào để cắt bớt một dấu thời gian trong python?

ʇsәɹoɉʇsәɹoɉʇsәɹoɈ

21.8K7 Huy hiệu vàng52 Huy hiệu bạc60 Huy hiệu Đồng7 gold badges52 silver badges60 bronze badges

2

Bạn có thể sử dụng gấu trúc cho điều đó (mặc dù nó có thể là chi phí cho nhiệm vụ đó). Bạn có thể sử dụng các số lượng tròn, sàn và trần cho các số thông thường và bất kỳ tần số gấu trúc nào từ các aliass offset:

import pandas as pd
import datetime as dt

now = dt.datetime.now()
pd_now = pd.Timestamp(now)

freq = '1d'
pd_round = pd_now.round(freq)
dt_round = pd_round.to_pydatetime()

print(now)
print(dt_round)

"""
2018-06-15 09:33:44.102292
2018-06-15 00:00:00
"""

Đã trả lời ngày 15 tháng 6 năm 2018 lúc 6:35Jun 15, 2018 at 6:35

Anton Protopopovanton ProtopopovAnton Protopopov

28.6K11 Huy hiệu vàng84 Huy hiệu bạc90 Huy hiệu đồng11 gold badges84 silver badges90 bronze badges

Có một thư viện tuyệt vời được sử dụng để thao túng ngày: DeLorean

import datetime
from delorean import Delorean
now = datetime.datetime.now()
d = Delorean(now, timezone='US/Pacific')

>>> now    
datetime.datetime(2015, 3, 26, 19, 46, 40, 525703)

>>> d.truncate('second')
Delorean(datetime=2015-03-26 19:46:40-07:00, timezone='US/Pacific')

>>> d.truncate('minute')
Delorean(datetime=2015-03-26 19:46:00-07:00, timezone='US/Pacific')

>>> d.truncate('hour')
Delorean(datetime=2015-03-26 19:00:00-07:00, timezone='US/Pacific')

>>> d.truncate('day')
Delorean(datetime=2015-03-26 00:00:00-07:00, timezone='US/Pacific')

>>> d.truncate('month')
Delorean(datetime=2015-03-01 00:00:00-07:00, timezone='US/Pacific')

>>> d.truncate('year')
Delorean(datetime=2015-01-01 00:00:00-07:00, timezone='US/Pacific')

Và nếu bạn muốn lấy lại giá trị DateTime:

>>> d.truncate('year').datetime
datetime.datetime(2015, 1, 1, 0, 0, tzinfo=)

Đã trả lời ngày 27 tháng 3 năm 2015 lúc 2:54Mar 27, 2015 at 2:54

DmitrysemenovdmitrysemenovDmitrySemenov

8.40013 Huy hiệu vàng59 Huy hiệu bạc95 Huy hiệu Đồng13 gold badges59 silver badges95 bronze badges

1

Bạn có thể sử dụng DateTime.strftime để trích xuất ngày, tháng, năm ...

Thí dụ :

>>> d_truncated = datetime.date(dt.year, dt.month, dt.day)
>>> d_truncated
datetime.date(2011, 3, 29)
0

Đầu ra (cho ngày hôm nay):

>>> d_truncated = datetime.date(dt.year, dt.month, dt.day)
>>> d_truncated
datetime.date(2011, 3, 29)
1

Nếu bạn chỉ muốn lấy lại một ngày, bạn có thể sử dụng thuộc tính ngày như:

>>> d_truncated = datetime.date(dt.year, dt.month, dt.day)
>>> d_truncated
datetime.date(2011, 3, 29)
2

Ouput (cho ngày hôm nay):

>>> d_truncated = datetime.date(dt.year, dt.month, dt.day)
>>> d_truncated
datetime.date(2011, 3, 29)
3

Đã trả lời ngày 29 tháng 3 năm 2011 lúc 16:57Mar 29, 2011 at 16:57

Sandro Mundasandro MundaSandro Munda

39K24 Huy hiệu vàng96 Huy hiệu bạc120 Huy hiệu đồng24 gold badges96 silver badges120 bronze badges

2

Nếu bạn đang xử lý một loạt các loại DateTime, có một cách hiệu quả hơn để cắt ngắn chúng, đặc biệt khi đối tượng loạt có rất nhiều hàng.

Bạn có thể sử dụng chức năng sàn

Ví dụ: nếu bạn muốn cắt nó thành giờ:

Tạo ra một loạt các ngày

>>> d_truncated = datetime.date(dt.year, dt.month, dt.day)
>>> d_truncated
datetime.date(2011, 3, 29)
4

Chúng ta có thể kiểm tra nó so sánh thời gian chạy giữa các chức năng thay thế và sàn.

>>> d_truncated = datetime.date(dt.year, dt.month, dt.day)
>>> d_truncated
datetime.date(2011, 3, 29)
5

Đã trả lời ngày 19 tháng 9 năm 2018 lúc 0:10Sep 19, 2018 at 0:10

1

>>> d_truncated = datetime.date(dt.year, dt.month, dt.day)
>>> d_truncated
datetime.date(2011, 3, 29)
6

Đã trả lời ngày 2 tháng 4 năm 2019 lúc 9:49Apr 2, 2019 at 9:49

Marklingmarklingmarkling

1.17414 Huy hiệu bạc26 Huy hiệu đồng14 silver badges26 bronze badges

1

Đây là một cách khác phù hợp với một dòng nhưng không đặc biệt thanh lịch:

>>> d_truncated = datetime.date(dt.year, dt.month, dt.day)
>>> d_truncated
datetime.date(2011, 3, 29)
7

Đã trả lời ngày 20 tháng 2 năm 2020 lúc 13:19Feb 20, 2020 at 13:19

Hướng dẫn how do i truncate a timestamp in python? - làm cách nào để cắt bớt một dấu thời gian trong python?

Valentin B.Valentin B.Valentin B.

5825 Huy hiệu bạc18 Huy hiệu Đồng5 silver badges18 bronze badges

Có một mô -đun datetime_truncate xử lý điều này cho bạn. Nó chỉ gọi DateTime.Reater.

Đã trả lời ngày 1 tháng 10 năm 2013 lúc 11:47Oct 1, 2013 at 11:47

Kyrrekyrrekyrre

6242 Huy hiệu vàng9 Huy hiệu bạc24 Huy hiệu đồng2 gold badges9 silver badges24 bronze badges

6 năm sau ... Tôi đã tìm thấy bài đăng này và tôi thích hơn aproach numpy:

>>> d_truncated = datetime.date(dt.year, dt.month, dt.day)
>>> d_truncated
datetime.date(2011, 3, 29)
8

Chúc mừng

Đã trả lời ngày 25 tháng 7 năm 2017 lúc 10:47Jul 25, 2017 at 10:47

Bạn chỉ có thể sử dụng

>>> d_truncated = datetime.date(dt.year, dt.month, dt.day)
>>> d_truncated
datetime.date(2011, 3, 29)
9

Đó là ánh sáng và trả về chính xác những gì bạn muốn.

Vidal

2.4862 Huy hiệu vàng14 Huy hiệu bạc28 Huy hiệu đồng2 gold badges14 silver badges28 bronze badges

Đã trả lời ngày 7 tháng 1 năm 2019 lúc 17:26Jan 7, 2019 at 17:26

BordottibordottiBordotti

1051 Huy hiệu vàng1 Huy hiệu bạc8 Huy hiệu đồng1 gold badge1 silver badge8 bronze badges

4

Nếu bạn muốn cắt giảm thời gian tùy ý:

>>> now = datetime.now()
>>> now.date()
datetime.date(2011, 3, 29)
0

Tái bút: Đây là cho Python3

Đã trả lời ngày 4 tháng 5 lúc 14:04May 4 at 14:04

Lionelslionelslionels

7127 Huy hiệu bạc12 Huy hiệu đồng7 silver badges12 bronze badges

Làm thế nào để bạn cắt thời gian trong Python?

Hàm python strftime () rất hữu ích khi làm việc với các biến ngày và datetime. strftime () chấp nhận một chuỗi đại diện cho định dạng của một ngày và trả về ngày dưới dạng chuỗi ở định dạng đã cho. Chúng ta có thể sử dụng strftime () để dễ dàng xóa thời gian khỏi các biến DateTime.strftime() function is very useful when working with date and datetime variables. strftime() accepts a string representing the format of a date and returns the date as a string in the given format. We can use strftime() to easily remove the time from datetime variables.

Làm cách nào để loại bỏ dấu thời gian theo thời gian trong Python?

hàm strftime () để loại bỏ thời gian từ DateTime trong Python.Chúng ta cũng có thể sử dụng hàm strftime () để loại bỏ thời gian từ DateTime trong Python.Hàm strftime () được sử dụng để trả về một chuỗi dựa trên đối tượng DateTime. to remove time from datetime in Python. We can also use the strftime() function to remove time from datetime in Python. The strftime() function is used to return a string based on a datetime object.

Làm cách nào để loại bỏ thời gian từ một đối tượng DateTime trong Python?

Bạn có thể sử dụng đơn giản là pd.to_dateTime (sau đó) và gấu trúc sẽ chuyển đổi các yếu tố ngày thành định dạng ngày ISO- [Yyyy-mm-dd].Bạn có thể vượt qua điều này dưới dạng bản đồ/áp dụng để sử dụng nó trong DataFrame/Sê -ri.pd. to_datetime(then) and pandas will convert the date elements into ISO date format- [YYYY-MM-DD] . You can pass this as map/apply to use it in a dataframe/series too.

Làm cách nào để loại bỏ mili giây khỏi dấu thời gian trong Python?

Làm thế nào để bạn tìm thấy dấu thời gian mà không có mili giây ?..
Từ DateTime Nhập DateTime ..
In DateTime.utcnow ().Strftime ('%y-%m-%d%h:%m:%S.%f') [:-3].
>>>> đầu ra >>>>.
2020-05-04 10: 18: 32.926 ..