Không phải là video 1 tuần, 2 ngày, 6 giờ 21 phút 32 giây dài?
Youtube hiển thị dưới dạng 222 giờ 21 phút 17 giây; 1 * 7 * 24 + 2 * 24 + 6 = 222. Tôi không biết 17 giây so với 32 giây khác biệt đến từ đâu, mặc dù; cũng có thể là lỗi làm tròn.
Theo tôi, viết một trình phân tích cú pháp cho điều đó không khó. Thật không may dateutil
dường như không phân tích các khoảng thời gian, chỉ các điểm datetime.
Cập nhật:
tôi thấy rằng có một gói cho điều này, nhưng cũng giống như một ví dụ về sức mạnh regexp, ngắn gọn, và cú pháp không thể hiểu được, đây là một phân tích cú pháp cho bạn:
import re
# see http://en.wikipedia.org/wiki/ISO_8601#Durations
ISO_8601_period_rx = re.compile(
'P' # designates a period
'(?:(?P<years>\d+)Y)?' # years
'(?:(?P<months>\d+)M)?' # months
'(?:(?P<weeks>\d+)W)?' # weeks
'(?:(?P<days>\d+)D)?' # days
'(?:T' # time part must begin with a T
'(?:(?P<hours>\d+)H)?' # hourss
'(?:(?P<minutes>\d+)M)?' # minutes
'(?:(?P<seconds>\d+)S)?' # seconds
')?' # end of time part
)
from pprint import pprint
pprint(ISO_8601_period_rx.match('P1W2DT6H21M32S').groupdict())
# {'days': '2',
# 'hours': '6',
# 'minutes': '21',
# 'months': None,
# 'seconds': '32',
# 'weeks': '1',
# 'years': None}
tôi cố tình không tính số giây chính xác từ những dữ liệu này ở đây. Nó trông tầm thường (xem ở trên), nhưng thực sự là không. Ví dụ, khoảng cách 2 tháng từ ngày 1 tháng 1 là 58 ngày (30 + 28) hoặc 59 (30 + 29), tùy thuộc vào năm, trong khi từ ngày 1 tháng 3, nó luôn là 61 ngày. Việc triển khai lịch thích hợp nên đưa tất cả điều này vào tài khoản; cho một tính toán chiều dài clip Youtube, nó phải là quá mức.
wow, xem xét tôi đã viết trình phân tích cú pháp của riêng tôi, điều này chỉ làm cho tất cả có vẻ dễ dàng :) cảm ơn! –
@ MorganWilde Một trong những điều tuyệt vời về python là bạn thường có thể tìm thấy một giải pháp hiện có, nếu không có trong thư viện chuẩn, sau đó là pypi. Đó là thực hành tốt để cố gắng tránh thực hiện bất cứ điều gì nếu một giải pháp đã tồn tại (trong bất kỳ ngôn ngữ, không chỉ python). – zstewart