74
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.
Tôi cần chuyển đổi các chuỗi giá trị thời gian được đưa ra ở định dạng sau thành vài giây, ví dụ:
1.'00:00:00,000' -> 0 seconds
2.'00:00:10,000' -> 10 seconds
3.'00:01:04,000' -> 64 seconds
4.'01:01:09,000' -> 3669 seconds
Tôi có cần sử dụng Regex để làm điều này không? Tôi đã cố gắng sử dụng mô -đun thời gian, nhưng
time.strptime['00:00:00,000','%I:%M:%S']
Ném:
ValueError: time data '00:00:00,000' does not match format '%I:%M:%S'
Chỉnh sửa::
Có vẻ như thế này:
from datetime import datetime
pt = datetime.strptime[timestring,'%H:%M:%S,%f']
total_seconds = pt.second + pt.minute*60 + pt.hour*3600
cho kết quả chính xác. Tôi chỉ sử dụng mô -đun sai.
Funnydman
7.0823 Huy hiệu vàng27 Huy hiệu bạc49 Huy hiệu đồng3 gold badges27 silver badges49 bronze badges
Hỏi ngày 19 tháng 5 năm 2012 lúc 8:43May 19, 2012 at 8:43
1
>>> import datetime
>>> import time
>>> x = time.strptime['00:01:00,000'.split[','][0],'%H:%M:%S']
>>> datetime.timedelta[hours=x.tm_hour,minutes=x.tm_min,seconds=x.tm_sec].total_seconds[]
60.0
Jojo
9.4782 Huy hiệu vàng48 Huy hiệu bạc69 Huy hiệu Đồng2 gold badges48 silver badges69 bronze badges
Đã trả lời ngày 19 tháng 5 năm 2012 lúc 9:07May 19, 2012 at 9:07
Burhan Khalidburhan KhalidBurhan Khalid
165K18 Huy hiệu vàng238 Huy hiệu bạc276 Huy hiệu Đồng18 gold badges238 silver badges276 bronze badges
Tôi nghĩ một chút pythonic hơn tôi sẽ là:
timestr = '00:04:23'
ftr = [3600,60,1]
sum[[a*b for a,b in zip[ftr, map[int,timestr.split[':']]]]]
Đầu ra là 263sec.
Tôi sẽ quan tâm để xem liệu có ai có thể đơn giản hóa nó hơn nữa không.
Đã trả lời ngày 5 tháng 10 năm 2012 lúc 4:34Oct 5, 2012 at 4:34
user1721943user1721943user1721943
4394 Huy hiệu bạc3 Huy hiệu đồng4 silver badges3 bronze badges
3
mà không cần nhập khẩu
time = "01:34:11"
sum[x * int[t] for x, t in zip[[3600, 60, 1], time.split[":"]]]
Đã trả lời ngày 20 tháng 12 năm 2016 lúc 22:56Dec 20, 2016 at 22:56
Thafritzthafritzthafritz
4391 Huy hiệu vàng6 Huy hiệu bạc8 Huy hiệu đồng1 gold badge6 silver badges8 bronze badges
2
Để có được
ValueError: time data '00:00:00,000' does not match format '%I:%M:%S'
0, bạn nên trừ ValueError: time data '00:00:00,000' does not match format '%I:%M:%S'
1:>>> from datetime import datetime
>>> datetime.strptime['01:01:09,000', '%H:%M:%S,%f']
datetime.datetime[1900, 1, 1, 1, 1, 9]
>>> td = datetime.strptime['01:01:09,000', '%H:%M:%S,%f'] - datetime[1900,1,1]
>>> td
datetime.timedelta[0, 3669]
>>> td.total_seconds[] # 2.7+
3669.0
ValueError: time data '00:00:00,000' does not match format '%I:%M:%S'
2 ở trên ngụ ý đầu vào ít hơn một ngày, để hỗ trợ chênh lệch thời gian hơn một ngày:>>> import re
>>> from datetime import timedelta
>>> td = timedelta[**dict[zip["hours minutes seconds milliseconds".split[],
... map[int, re.findall['\d+', '31:01:09,000']]]]]
>>> td
datetime.timedelta[1, 25269]
>>> td.total_seconds[]
111669.0
Để mô phỏng
ValueError: time data '00:00:00,000' does not match format '%I:%M:%S'
3 trên Python 2.6:>>> from __future__ import division
>>> [[td.days * 86400 + td.seconds] * 10**6 + td.microseconds] / 10**6
111669.0
Đã trả lời ngày 12 tháng 9 năm 2015 lúc 12:00Sep 12, 2015 at 12:00
JFSJFSjfs
383K182 Huy hiệu vàng948 Huy hiệu bạc1619 Huy hiệu đồng182 gold badges948 silver badges1619 bronze badges
Có vẻ như bạn sẵn sàng tước các phân số của một giây ... Vấn đề là bạn không thể sử dụng '00' như giờ với
ValueError: time data '00:00:00,000' does not match format '%I:%M:%S'
4time.strptime['00:00:00,000','%I:%M:%S']
0Đã trả lời ngày 19 tháng 5 năm 2012 lúc 8:50May 19, 2012 at 8:50
Mike Penningtonmike PenningtonMike Pennington
41.1K19 Huy hiệu vàng134 Huy hiệu bạc172 Huy hiệu đồng19 gold badges134 silver badges172 bronze badges
time.strptime['00:00:00,000','%I:%M:%S']
1Đã trả lời ngày 17 tháng 2 năm 2021 lúc 10:53Feb 17, 2021 at 10:53
PiotrpiotrPiotr
1.65716 huy hiệu bạc23 Huy hiệu đồng16 silver badges23 bronze badges
1
Luôn có phân tích cú pháp bằng tay
time.strptime['00:00:00,000','%I:%M:%S']
2Đã trả lời ngày 19 tháng 5 năm 2012 lúc 8:54May 19, 2012 at 8:54
Nick Craig-Woodnick Craig-WoodNick Craig-Wood
51.7K12 Huy hiệu vàng122 Huy hiệu bạc129 Huy hiệu đồng12 gold badges122 silver badges129 bronze badges
1
time.strptime['00:00:00,000','%I:%M:%S']
3Kết quả: 3.0
Đã trả lời ngày 30 tháng 8 năm 2018 lúc 21:03Aug 30, 2018 at 21:03
Lấy cảm hứng từ bình luận của Sverrir-Sigmundarson:
time.strptime['00:00:00,000','%I:%M:%S']
4Đã trả lời ngày 6 tháng 5 năm 2019 lúc 10:13May 6, 2019 at 10:13
YscharfyscharfYScharf
1.1959 huy hiệu bạc15 huy hiệu đồng9 silver badges15 bronze badges
ValueError: time data '00:00:00,000' does not match format '%I:%M:%S'
3 dường như rất đơn giản.straightforward.time.strptime['00:00:00,000','%I:%M:%S']
5Đã trả lời ngày 13 tháng 1 lúc 13:36Jan 13 at 13:36
Reda el hailreda el hailReda El Hail
8581 Huy hiệu vàng6 Huy hiệu bạc15 Huy hiệu đồng1 gold badge6 silver badges15 bronze badges
time.strptime['00:00:00,000','%I:%M:%S']
6Đã trả lời ngày 20 tháng 9 năm 2020 lúc 22:15Sep 20, 2020 at 22:15
DawedaweDaWe
1.16014 Huy hiệu bạc20 Huy hiệu đồng14 silver badges20 bronze badges
Giải pháp động cho HH: MM: SS và MM: SS. Nếu bạn muốn xử lý một lệnh, hãy sử dụng
ValueError: time data '00:00:00,000' does not match format '%I:%M:%S'
6 chia cho 1000 hoặc một cái gì đó và sau đó thêm.time.strptime['00:00:00,000','%I:%M:%S']
7Đã trả lời ngày 17 tháng 4 năm 2021 lúc 17:55Apr 17, 2021 at 17:55
ElijahelijahElijah
1.52817 Huy hiệu bạc22 Huy hiệu đồng17 silver badges22 bronze badges
Tại sao không sử dụng
ValueError: time data '00:00:00,000' does not match format '%I:%M:%S'
7?time.strptime['00:00:00,000','%I:%M:%S']
8Một chức năng, hoạt động trên
ValueError: time data '00:00:00,000' does not match format '%I:%M:%S'
8, ValueError: time data '00:00:00,000' does not match format '%I:%M:%S'
9 hoặc from datetime import datetime
pt = datetime.strptime[timestring,'%H:%M:%S,%f']
total_seconds = pt.second + pt.minute*60 + pt.hour*3600
0. Nếu bạn sử dụng from datetime import datetime
pt = datetime.strptime[timestring,'%H:%M:%S,%f']
total_seconds = pt.second + pt.minute*60 + pt.hour*3600
1 thay vì from datetime import datetime
pt = datetime.strptime[timestring,'%H:%M:%S,%f']
total_seconds = pt.second + pt.minute*60 + pt.hour*3600
2 cho dấu hiệu thập phân, nó thậm chí còn đơn giản hơn:time.strptime['00:00:00,000','%I:%M:%S']
9Đã trả lời ngày 10 tháng 6 năm 2021 lúc 23:32Jun 10, 2021 at 23:32
Tianyi Shitianyi ShiTianyi Shi
7218 Huy hiệu bạc12 Huy hiệu đồng8 silver badges12 bronze badges