Hướng dẫn how do you convert hh mm ss to hh mm in python? - Làm thế nào để bạn chuyển đổi hh mm ss sang hh mm trong python?

Về cơ bản tôi có nghịch đảo của vấn đề này: thời gian python giây đến h: m: s

Tôi có một chuỗi ở định dạng h: mm: ss (luôn luôn 2 chữ số trong vài phút và giây) và tôi cần số số giây mà nó đại diện. Làm thế nào tôi có thể làm điều này trong Python?

Ví dụ:

  • "1:23:45" sẽ tạo ra đầu ra là 5025
  • "0:04:15" sẽ tạo ra đầu ra là 255
  • "0:00:25" sẽ tạo ra đầu ra 25

vân vân

hỏi ngày 19 tháng 6 năm 2011 lúc 14:05Jun 19, 2011 at 14:05

1

def get_sec(time_str): """Get seconds from time.""" h, m, s = time_str.split(':') return int(h) * 3600 + int(m) * 60 + int(s) print(get_sec('1:23:45')) print(get_sec('0:04:15')) print(get_sec('0:00:25'))

Leopardshark

2.9972 Huy hiệu vàng20 Huy hiệu bạc31 Huy hiệu Đồng2 gold badges20 silver badges31 bronze badges

Đã trả lời ngày 19 tháng 6 năm 2011 lúc 14:11Jun 19, 2011 at 14:11

Taskinoortaskinoortaskinoor

45K12 Huy hiệu vàng116 Huy hiệu bạc139 Huy hiệu đồng12 gold badges116 silver badges139 bronze badges

0

ts = '1:23:45' secs = sum(int(x) * 60 ** i for i, x in enumerate(reversed(ts.split(':')))) print(secs)

Đã trả lời ngày 19 tháng 6 năm 2011 lúc 14:22Jun 19, 2011 at 14:22

FMCFMCFMc

41.3K13 Huy hiệu vàng76 Huy hiệu bạc131 Huy hiệu đồng13 gold badges76 silver badges131 bronze badges

5

Sử dụng mô -đun DateTime

import datetime t = '10:15:30' h,m,s = t.split(':') print(int(datetime.timedelta(hours=int(h),minutes=int(m),seconds=int(s)).total_seconds()))

Đầu ra: 36930

Đã trả lời ngày 14 tháng 5 năm 2014 lúc 22:52May 14, 2014 at 22:52

Kaushkaushkaush

1611 Huy hiệu bạc7 Huy hiệu đồng1 silver badge7 bronze badges

3

Không có nhiều kiểm tra và giả sử đó là "SS" hoặc "MM: SS" hoặc "HH: MM: SS" (mặc dù không nhất thiết là hai chữ số mỗi phần):

def to_seconds(timestr): seconds= 0 for part in timestr.split(':'): seconds= seconds*60 + int(part, 10) return seconds >>> to_seconds('09') 9 >>> to_seconds('2:09') 129 >>> to_seconds('1:02:09') 3729

Đây là một câu trả lời chính tả khác về câu trả lời của FMC :)

Đã trả lời ngày 19 tháng 6 năm 2011 lúc 14:46Jun 19, 2011 at 14:46

Tzottzottzot

89.5K29 Huy hiệu vàng138 Huy hiệu bạc201 Huy hiệu đồng29 gold badges138 silver badges201 bronze badges

2

Sử dụng mô -đun ts = '1:23:45' secs = sum(int(x) * 60 ** i for i, x in enumerate(reversed(ts.split(':')))) print(secs) 7 cũng có thể xác định và mạnh mẽ hơn

import datetime as dt def get_total_seconds(stringHMS): timedeltaObj = dt.datetime.strptime(stringHMS, "%H:%M:%S") - dt.datetime(1900,1,1) return timedeltaObj.total_seconds()

ts = '1:23:45' secs = sum(int(x) * 60 ** i for i, x in enumerate(reversed(ts.split(':')))) print(secs) 8 phân tích chuỗi theo định dạng%H:%m:%s và nó tạo ra một đối tượng DateTime là năm 1900, tháng2, ngày 1, giờ H, phút M và S. thứ hai S.

Đó là lý do tại sao để có được tổng số giây là cần thiết để trừ đi năm, tháng và ngày.

print(get_total_seconds('1:23:45')) >>> 5025.0 print(get_total_seconds('0:04:15')) >>> 255.0 print(get_total_seconds('0:00:25')) >>>25.0

Đã trả lời ngày 19 tháng 5 năm 2020 lúc 11:52May 19, 2020 at 11:52

DanitebadanitebaDaniTeba

Phim huy hiệu bạc 181151 silver badge5 bronze badges

1

Bạn có thể sử dụng Lambda và giảm danh sách và thực tế là M = 60s và H = 60m. (Xem "Giảm danh sách" tại //www.python-course.eu/lambda.php)

timestamp = "1:23:45" seconds = reduce(lambda x, y: x*60+y, [int(i) for i in (timestamp.replace(':',',')).split(',')])

Đã trả lời ngày 8 tháng 4 năm 2017 lúc 15:53Apr 8, 2017 at 15:53

Bạn có thể chia thời gian thành một danh sách và thêm từng thành phần thời gian riêng lẻ, nhân thành phần giờ với 3600 (số giây trong một giờ) và thành phần phút với 60 (số giây trong một phút), như:

timeInterval ='00:35:01' list = timeInterval.split(':') hours = list[0] minutes = list[1] seconds = list[2] total = (int(hours) * 3600 + int(minutes) * 60 + int(seconds)) print("total = ", total)

Đã trả lời ngày 24 tháng 8 năm 2018 lúc 9:46Aug 24, 2018 at 9:46

Cho%h:%m:%S.%F

def get_sec(time_str): h, m, s = time_str.split(':') return int(h) * 3600 + int(m) * 60 + float(s)

Đã trả lời ngày 9 tháng 9 năm 2021 lúc 9:40Sep 9, 2021 at 9:40

parts = time_string.split(":") seconds = int(parts[0])*(60*60) + int(parts[1])*60 + int(parts[2])

Đã trả lời ngày 19 tháng 6 năm 2011 lúc 14:10Jun 19, 2011 at 14:10

DaclowndaclownDaClown

3.9216 Huy hiệu vàng30 Huy hiệu bạc 30 Huy hiệu Đồng6 gold badges30 silver badges30 bronze badges

1

Tôi không thực sự thích bất kỳ câu trả lời nào trong số đó, vì vậy tôi đã sử dụng như sau:

ts = '1:23:45' secs = sum(int(x) * 60 ** i for i, x in enumerate(reversed(ts.split(':')))) print(secs) 0

Jayrizzo

2.7923 huy hiệu vàng31 Huy hiệu bạc42 Huy hiệu đồng3 gold badges31 silver badges42 bronze badges

Đã trả lời ngày 30 tháng 8 năm 2017 lúc 23:18Aug 30, 2017 at 23:18

0

Mở rộng trên giải pháp của @FMC thể hiện một nửa phương pháp của Horner. Ưu điểm của phương pháp của Horner: Bỏ qua việc đảo ngược danh sách, tránh tính toán công suất.

ts = '1:23:45' secs = sum(int(x) * 60 ** i for i, x in enumerate(reversed(ts.split(':')))) print(secs) 1

Hoặc, nếu bạn không thích giảm (cũng như Guido Van Rossum và @0xc0de bên dưới):

ts = '1:23:45' secs = sum(int(x) * 60 ** i for i, x in enumerate(reversed(ts.split(':')))) print(secs) 2

Nếu bạn thích ZIP (cũng như @Nathan-Rice bên dưới):

ts = '1:23:45' secs = sum(int(x) * 60 ** i for i, x in enumerate(reversed(ts.split(':')))) print(secs) 3

Đã trả lời ngày 22 tháng 8 năm 2019 lúc 13:12Aug 22, 2019 at 13:12

1

Một cách khác nếu bạn có nhiều ngày trên chuỗi:

ts = '1:23:45' secs = sum(int(x) * 60 ** i for i, x in enumerate(reversed(ts.split(':')))) print(secs) 4

Đã trả lời ngày 15 tháng 10 năm 2014 lúc 23:47Oct 15, 2014 at 23:47

ItaluxitaluxItalux

751 Huy hiệu vàng1 Huy hiệu bạc9 Huy hiệu đồng1 gold badge1 silver badge9 bronze badges

2

Chỉ là một khái quát đơn giản cho phản ứng tuyệt vời của Taskinoor

Trong bối cảnh vấn đề của tôi, định dạng tương tự, nhưng bao gồm AM hoặc PM.

Định dạng 'HH: MM: SS AM' hoặc 'HH: MM: SS PM'

Đối với trường hợp này, chức năng thay đổi thành:

ts = '1:23:45' secs = sum(int(x) * 60 ** i for i, x in enumerate(reversed(ts.split(':')))) print(secs) 5

Đã trả lời ngày 16 tháng 11 năm 2020 lúc 20:18Nov 16, 2020 at 20:18

Trong gấu trúc sử dụng chức năng tuyệt vời của @Jayrizzo và danh sách hiểu biết:

ts = '1:23:45' secs = sum(int(x) * 60 ** i for i, x in enumerate(reversed(ts.split(':')))) print(secs) 6

Sven Eberth

2.98612 Huy hiệu vàng22 Huy hiệu bạc27 Huy hiệu đồng12 gold badges22 silver badges27 bronze badges

Đã trả lời ngày 22 tháng 6 năm 2021 lúc 18:38Jun 22, 2021 at 18:38

Làm thế nào để bạn viết HH MM SS trong Python?

Chất xây dựng Timedelta tạo ra đối tượng Timedelta, biểu thị định dạng thời gian tính theo ngày, giờ, phút và giây (ngày, HH: MM: SS.MS).Ví dụ, DateTime.Timedelta (giây = 6010) sẽ trả lại 1 giờ 40 phút 10 giây.. For example, datetime. timedelta(seconds=6010) will return 1 hour 40 minutes 10 seconds.

Làm cách nào để chuyển đổi thời gian thành giờ trong Python?

24*3600 kể từ một giờ có 3600 giây (60*60) và một ngày có 24 giờ ...
Nhận giá trị giờ.Để có được giá trị giờ từ vài giây, chúng tôi sẽ sử dụng toán tử phân chia sàn (//).....
Nhận giá trị phút.....
Nhận giá trị giây.....
Hoàn thành mã ..

Làm thế nào để bạn chuyển đổi giờ vài phút và giây trong Python?

Mô -đun thời gian của Python cung cấp hàm DateTime.strftime () để chuyển đổi giây thành giờ, phút và giây.Nó cần định dạng thời gian và thời gian.gmtime () chức năng như đối số.datetime. strftime() function to convert seconds into hours, minutes, and seconds. It takes time format and time. gmtime() function as arguments.

Làm thế nào để bạn chuyển đổi theo thời gian trong Python?

Có hai chức năng thời gian Python mà bạn sử dụng để chuyển đổi thời gian ...
%D: Ngày của tháng ..
%M: Tháng trong năm ..
%Y: năm ..

Chủ đề