Hướng dẫn python datetime set hour minute second to 0 - ngày giờ trong python đã đặt giờ phút giây thành 0

326

Mới! Lưu câu hỏi hoặc câu trả lời và sắp xếp nội dung yêu thích của bạn. Tìm hiểu thêm.
Learn more.

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 python datetime set hour minute second to 0 - ngày giờ trong python đã đặt giờ phút giây thành 0

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 python datetime set hour minute second to 0 - ngày giờ trong python đã đặt giờ phút giây thành 0

Kyle Brandtkyle BrandtKyle Brandt

25.7K34 Huy hiệu vàng121 Huy hiệu bạc162 Huy hiệu đồng34 gold badges121 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.4273 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

102K29 Huy hiệu vàng196 Huy hiệu bạc191 Huy hiệu Đồng29 gold badges196 silver badges191 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 python datetime set hour minute second to 0 - ngày giờ trong python đã đặt giờ phút giây thành 0

zx81zx81zx81

40.2k9 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

384K182 Huy hiệu vàng949 Huy hiệu bạc1619 Huy hiệu đồng182 gold badges949 silver badges1619 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 python datetime set hour minute second to 0 - ngày giờ trong python đã đặt giờ phút giây thành 0

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

21.7K7 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.5K11 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=<DstTzInfo 'US/Pacific' PDT-1 day, 17:00:00 DST>)

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

DmitrysemenovdmitrysemenovDmitrySemenov

8.35613 Huy hiệu vàng59 Huy hiệu bạc94 Huy hiệu Đồng13 gold badges59 silver badges94 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

38.9K24 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.15414 Huy hiệu bạc25 Huy hiệu đồng14 silver badges25 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 python datetime set hour minute second to 0 - ngày giờ trong python đã đặt giờ phút giây thành 0

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

6241 Huy hiệu vàng9 Huy hiệu bạc24 Huy hiệu đồng1 gold badge9 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.4762 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

1071 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 để tôi thoát khỏi vài phút và giây trong DateTime trong Python?

Sử dụng strftTime để loại bỏ thời gian từ DateTime trong Python, chúng ta có thể sử dụng strftime () để dễ dàng xóa thời gian khỏi các biến DateTime.Ví dụ: nếu bạn muốn in ra ngày theo định dạng, Yyyy-mm-dd, thì chúng tôi sẽ vượt qua%y-%m-%d, cho strfttime () và không có thời gian nào được in.use strftime() to easily remove the time from datetime variables. For example, if you want to print out the date in the format “YYYY-MM-DD”, we pass “%Y-%m-%d” to strfttime() and no time is printed.

Làm thế nào để tôi cắt ngắn dấu thời gian trong Python?

Cách cắt thời gian từ một đối tượng DateTime trong Python..
date_and_time = DateTime.DateTime (2019, 12, 30).
print(date_and_time).
date = date_and_time.ngày().
print(date).

Làm cách nào để đặt DateTime trong Python?

Để tạo một ngày, chúng ta có thể sử dụng lớp DateTime () (Trình xây dựng) của mô -đun DateTime.Lớp DateTime () yêu cầu ba tham số để tạo một ngày: năm, tháng, ngày.use the datetime() class (constructor) of the datetime module. The datetime() class requires three parameters to create a date: year, month, day.

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

Xóa giây khỏi DateTime trong Python..
Lớp DateTime () ..
Phương thức strftime () ..