Hàm để có được một datetime từ một chuỗi,
import datetime
8 yêu cầu định dạng chuỗi làm đối số thứ hai. Có cách nào để xây dựng một datetime từ một chuỗi mà không biết định dạng chính xác và có Python tốt nhất không?hỏi ngày 29 tháng 2 năm 2012 lúc 22:27Feb 29, 2012 at 22:27
5
Có thể thoát khỏi một chức năng đơn giản nếu chỉ kiểm tra ngày.
def get_date[s_date]:
date_patterns = ["%d-%m-%Y", "%Y-%m-%d"]
for pattern in date_patterns:
try:
return datetime.datetime.strptime[s_date, pattern].date[]
except:
pass
print "Date is not in expected format: %s" %[s_date]
sys.exit[0]
Đã trả lời ngày 1 tháng 8 năm 2014 lúc 12:48Aug 1, 2014 at 12:48
SandeepsandeepSandeep
27.3k3 Huy hiệu vàng31 Huy hiệu bạc23 Huy hiệu đồng3 gold badges31 silver badges23 bronze badges
1
Quay lại trước khi tôi là một chàng trai Python, tôi là một chàng trai Perl. Một trong những điều mà tôi luôn bỏ lỡ nhưng chưa thấy bất cứ điều gì gần với nó là ngày :: Manip. Mô -đun đó có thể trích xuất một dấu thời gian tốt từ một lần nhấm nháp. Tôi gần như nghi ngờ rằng đó là tác giả đã thỏa thuận với ma quỷ.
Tôi đã chạy qua một vài điều gây đâm vào nó trong Python:
- Bình thường
- mxdatetime
- Mô -đun ngày của Roundup có một số người hâm mộ
Nếu bạn tìm thấy bất cứ điều gì tốt hơn, tôi rất muốn nghe về nó.
Đã trả lời ngày 1 tháng 3 năm 2012 lúc 4:50Mar 1, 2012 at 4:50
SynthesizerPatelSynthesizerPatelsynthesizerpatel
26.7K5 Huy hiệu vàng72 Huy hiệu bạc90 Huy hiệu Đồng5 gold badges72 silver badges90 bronze badges
1
Bạn có thể sử dụng Datefinder, nó sẽ phát hiện tất cả các loại kiểu tự nhiên của ngày.
import datefinder # Module used to find different style of date with time
string_value = " created 01/15/2005 by ACME inc.and associates.January 4th,2017 at 8pm"
matches = datefinder.find_dates[string_value]
for match in matches:
print["match found ",match]
Đầu ra
match found 2005-01-15 00:00:00
match found 2017-01-04 20:00:00
Copperfield
7.6913 Huy hiệu vàng19 Huy hiệu bạc28 Huy hiệu đồng3 gold badges19 silver badges28 bronze badges
Đã trả lời ngày 24 tháng 2 năm 2019 lúc 19:36Feb 24, 2019 at 19:36
2
Giới thiệu
Python đi kèm với một loạt các đối tượng hữu ích có thể được sử dụng ra khỏi hộp. Đối tượng ngày là ví dụ của các đối tượng như vậy. Các loại ngày rất khó thao tác từ đầu, do sự phức tạp của ngày và thời gian. Tuy nhiên, các đối tượng ngày Python giúp việc chuyển đổi ngày thành các định dạng chuỗi mong muốn cực kỳ dễ dàng.
Định dạng ngày là một trong những nhiệm vụ quan trọng nhất mà bạn sẽ phải đối mặt với tư cách là một lập trình viên. Các khu vực khác nhau trên thế giới có những cách khác nhau để biểu diễn ngày/thời gian, do đó, mục tiêu của bạn với tư cách là một lập trình viên là trình bày các giá trị ngày theo cách có thể đọc được cho người dùng.
Ví dụ: bạn có thể cần thể hiện một giá trị ngày bằng số như "02-23-2018". Mặt khác, bạn có thể cần phải viết cùng một giá trị ngày theo định dạng văn bản dài hơn như "ngày 23 tháng 2 năm 2018". Trong một kịch bản khác, bạn có thể muốn trích xuất tháng ở định dạng chuỗi từ giá trị ngày được định dạng bằng số.
Trong bài viết này, chúng tôi sẽ nghiên cứu các loại đối tượng ngày khác nhau cùng với các chức năng của chúng.
Mô -đun DateTime
Mô -đun ____39 của Python, như bạn có thể đoán, chứa các phương thức có thể được sử dụng để hoạt động với các giá trị ngày và thời gian. Để sử dụng mô -đun này, trước tiên chúng tôi nhập nó thông qua câu lệnh
t = datetime.time[1, 10, 20, 13]
0 như sau:import datetime
Chúng ta có thể biểu diễn các giá trị thời gian bằng cách sử dụng lớp
t = datetime.time[1, 10, 20, 13]
1. Các thuộc tính cho lớp t = datetime.time[1, 10, 20, 13]
1 bao gồm giờ, phút, thứ hai và micro giây.Các đối số cho lớp
t = datetime.time[1, 10, 20, 13]
1 là tùy chọn. Mặc dù nếu bạn không chỉ định bất kỳ đối số nào, bạn sẽ lấy lại thời gian 0, điều này khó có thể là thứ bạn cần hầu hết thời gian.Ví dụ: để khởi tạo đối tượng thời gian với giá trị 1 giờ, 10 phút, 20 giây và 13 micro giây, chúng ta có thể chạy lệnh sau:
t = datetime.time[1, 10, 20, 13]
Để xem thời gian, hãy sử dụng hàm
t = datetime.time[1, 10, 20, 13]
4:print[t]
Output:
01:10:20.000013
Bạn có thể cần phải nhìn thấy một giờ, phút, thứ hai hoặc micro giây, đây là cách bạn có thể làm như vậy:
print['hour:', t.hour]
Output:
hour: 1
Các phút, giây và micro giây trong thời gian trên có thể được truy xuất như sau:
print['Minutes:', t.minute]
print['Seconds:', t.second]
print['Microsecond:', t.microsecond]
Output:
import datefinder # Module used to find different style of date with time
string_value = " created 01/15/2005 by ACME inc.and associates.January 4th,2017 at 8pm"
matches = datefinder.find_dates[string_value]
for match in matches:
print["match found ",match]
0Các giá trị cho ngày lịch có thể được biểu diễn thông qua lớp
t = datetime.time[1, 10, 20, 13]
5. Các trường hợp sẽ có các thuộc tính cho năm, tháng và ngày.Hãy để chúng tôi gọi phương thức
t = datetime.time[1, 10, 20, 13]
6 để xem ngày hôm nay:import datefinder # Module used to find different style of date with time
string_value = " created 01/15/2005 by ACME inc.and associates.January 4th,2017 at 8pm"
matches = datefinder.find_dates[string_value]
for match in matches:
print["match found ",match]
1Output:
import datefinder # Module used to find different style of date with time
string_value = " created 01/15/2005 by ACME inc.and associates.January 4th,2017 at 8pm"
matches = datefinder.find_dates[string_value]
for match in matches:
print["match found ",match]
2Mã sẽ trả về ngày cho ngày hôm nay, do đó, đầu ra bạn thấy sẽ phụ thuộc vào ngày bạn chạy tập lệnh trên.
Bây giờ chúng ta hãy gọi phương thức
t = datetime.time[1, 10, 20, 13]
7 để in ngày ở định dạng khác:import datefinder # Module used to find different style of date with time
string_value = " created 01/15/2005 by ACME inc.and associates.January 4th,2017 at 8pm"
matches = datefinder.find_dates[string_value]
for match in matches:
print["match found ",match]
3Output:
import datefinder # Module used to find different style of date with time
string_value = " created 01/15/2005 by ACME inc.and associates.January 4th,2017 at 8pm"
matches = datefinder.find_dates[string_value]
for match in matches:
print["match found ",match]
4Phương pháp
t = datetime.time[1, 10, 20, 13]
7 sử dụng định dạng thời gian dài hơn so với các ví dụ chúng ta đã thấy trước đây. Phương pháp này chủ yếu được sử dụng để chuyển đổi thời gian Unix [số giây kể từ ngày 1 tháng 1 năm 1970] thành định dạng chuỗi.Và đây là cách chúng ta có thể hiển thị năm, tháng và ngày sử dụng lớp
t = datetime.time[1, 10, 20, 13]
5:import datefinder # Module used to find different style of date with time
string_value = " created 01/15/2005 by ACME inc.and associates.January 4th,2017 at 8pm"
matches = datefinder.find_dates[string_value]
for match in matches:
print["match found ",match]
5Đầu ra
import datefinder # Module used to find different style of date with time
string_value = " created 01/15/2005 by ACME inc.and associates.January 4th,2017 at 8pm"
matches = datefinder.find_dates[string_value]
for match in matches:
print["match found ",match]
6Chuyển đổi ngày thành chuỗi với thời gian diễn ra
Bây giờ bạn đã biết cách tạo các đối tượng ngày và thời gian, chúng ta hãy tìm hiểu cách định dạng chúng thành các chuỗi dễ đọc hơn.
Để đạt được điều này, chúng tôi sẽ sử dụng phương pháp
print[t]
0. Phương pháp này giúp chúng tôi chuyển đổi các đối tượng ngày thành các chuỗi có thể đọc được. Phải mất hai tham số, như được hiển thị trong cú pháp sau:import datefinder # Module used to find different style of date with time
string_value = " created 01/15/2005 by ACME inc.and associates.January 4th,2017 at 8pm"
matches = datefinder.find_dates[string_value]
for match in matches:
print["match found ",match]
7Tham số đầu tiên là chuỗi định dạng, trong khi tham số thứ hai là thời gian được định dạng, đó là tùy chọn.
Phương pháp này cũng có thể được sử dụng trực tiếp trên đối tượng
import datetime
9, như được hiển thị trong ví dụ sau:import datefinder # Module used to find different style of date with time
string_value = " created 01/15/2005 by ACME inc.and associates.January 4th,2017 at 8pm"
matches = datefinder.find_dates[string_value]
for match in matches:
print["match found ",match]
8Output:
import datefinder # Module used to find different style of date with time
string_value = " created 01/15/2005 by ACME inc.and associates.January 4th,2017 at 8pm"
matches = datefinder.find_dates[string_value]
for match in matches:
print["match found ",match]
9Kiểm tra hướng dẫn thực hành của chúng tôi, thực tế để học Git, với các thực hành tốt nhất, các tiêu chuẩn được công nghiệp chấp nhận và bao gồm bảng gian lận. Ngừng các lệnh git googling và thực sự tìm hiểu nó!
Chúng tôi đã sử dụng các chuỗi ký tự sau để định dạng ngày:
2: Trả về ba ký tự đầu tiên của tên tháng. Trong ví dụ của chúng tôi, nó đã trả lại "SEP"print[t]
3: Trả về ngày trong tháng, từ 1 đến 31. Trong ví dụ của chúng tôi, nó đã trả lại "15".print[t]
4: Trả về năm ở định dạng bốn chữ số. Trong ví dụ của chúng tôi, nó đã trả lại "2018".print[t]
5: Trả lại giờ. Trong ví dụ của chúng tôi, nó đã trả lại "00".print[t]
6: Trả về phút, từ 00 đến 59. Trong ví dụ của chúng tôi, nó đã trả lại "00".print[t]
7: Trả về thứ hai, từ 00 đến 59. Trong ví dụ của chúng tôi, nó đã trả lại "00".print[t]
Chúng tôi đã không vượt qua một thời gian, do đó các giá trị cho thời gian là tất cả "00". Ví dụ sau đây cho thấy thời gian cũng có thể được định dạng như thế nào:
match found 2005-01-15 00:00:00
match found 2017-01-04 20:00:00
0Output:
match found 2005-01-15 00:00:00
match found 2017-01-04 20:00:00
1Danh sách mã ký tự hoàn chỉnh
Khác với các chuỗi ký tự được đưa ra ở trên, phương thức
print[t]
0 có một số chỉ thị khác để định dạng giá trị ngày:
9: Trả về ba nhân vật đầu tiên của ngày trong tuần, ví dụ: Thứ Tư.print[t]
0: Trả về tên đầy đủ của ngày trong tuần, ví dụ: Thứ Tư.01:10:20.000013
1: Trả về tên đầy đủ của tháng, ví dụ: Tháng 9.01:10:20.000013
2: Trả lại ngày trong tuần làm số, từ 0 đến 6, với Chủ nhật là 0.01:10:20.000013
3: Trả về tháng dưới dạng số, từ 01 đến 12.01:10:20.000013
4: Trả về AM/PM cho thời gian.01:10:20.000013
5: Trả lại năm ở định dạng hai chữ số, nghĩa là không có thế kỷ. Ví dụ: "18" thay vì "2018".01:10:20.000013
6: Trả về micro giây từ 000000 đến 999999.01:10:20.000013
7: Trả về múi giờ.01:10:20.000013
8: Trả về bù UTC.01:10:20.000013
9: Trả về số lượng của ngày trong năm, từ 001 đến 366.01:10:20.000013
0: Trả lại số tuần của năm, từ 00 đến 53, với thứ Hai được tính là ngày đầu tiên của tuần.print['hour:', t.hour]
1: Trả lại số tuần của năm, từ 00 đến 53, với Chủ nhật được tính là ngày đầu tiên của mỗi tuần.print['hour:', t.hour]
2: Trả về phiên bản ngày và giờ địa phương.print['hour:', t.hour]
3: Trả về phiên bản cục bộ của ngày.print['hour:', t.hour]
4: Trả về phiên bản địa phương của thời gian.print['hour:', t.hour]
Xem xét ví dụ sau:
match found 2005-01-15 00:00:00
match found 2017-01-04 20:00:00
2Output:
match found 2005-01-15 00:00:00
match found 2017-01-04 20:00:00
3Và đây là cách bạn chỉ có thể nhận được tháng:
match found 2005-01-15 00:00:00
match found 2017-01-04 20:00:00
4Output:
match found 2005-01-15 00:00:00
match found 2017-01-04 20:00:00
5Hãy để chúng tôi hiển thị năm:
match found 2005-01-15 00:00:00
match found 2017-01-04 20:00:00
6Output:
match found 2005-01-15 00:00:00
match found 2017-01-04 20:00:00
7Trong ví dụ này, chúng tôi đã sử dụng mã định dạng
print[t]
4. Lưu ý rằng print['hour:', t.hour]
6 là ở chữ hoa. Bây giờ hãy viết nó bằng chữ thường:match found 2005-01-15 00:00:00
match found 2017-01-04 20:00:00
8Output:
match found 2005-01-15 00:00:00
match found 2017-01-04 20:00:00
9Lần này, thế kỷ đã bị bỏ qua. Như bạn có thể thấy, với các mã định dạng này, bạn có thể đại diện cho thời gian ngày dưới bất kỳ hình thức nào bạn muốn.
Chuyển đổi chuỗi thành ngày với thời gian diễn ra
Phương pháp
print[t]
0 đã giúp chúng tôi chuyển đổi các đối tượng ngày thành các chuỗi dễ đọc hơn. Phương pháp print['hour:', t.hour]
8 làm ngược lại, nghĩa là, nó lấy các chuỗi và chuyển đổi chúng thành các đối tượng ngày mà Python có thể hiểu.Đây là cú pháp cho phương pháp:
import datetime
0Tham số
print['hour:', t.hour]
9 là giá trị trong định dạng chuỗi mà chúng tôi muốn chuyển đổi thành định dạng ngày. Tham số hour: 1
0 là chỉ thị chỉ định định dạng sẽ được thực hiện vào ngày sau khi chuyển đổi.Ví dụ: giả sử chúng ta cần chuyển đổi chuỗi "9/15/18" thành đối tượng
import datetime
9.Trước tiên chúng ta hãy nhập mô -đun
import datetime
9. Chúng tôi sẽ sử dụng từ khóa hour: 1
3 để có thể tham chiếu các hàm mô -đun cụ thể mà không có định dạng DOT:import datetime
1Sau đó chúng ta có thể xác định ngày ở dạng chuỗi:
import datetime
2Python sẽ không thể hiểu chuỗi trên dưới dạng DateTime cho đến khi chúng tôi chuyển đổi nó thành đối tượng
import datetime
9 thực tế. Chúng tôi có thể thực hiện thành công bằng cách gọi phương thức print['hour:', t.hour]
8.Thực hiện lệnh sau để chuyển đổi chuỗi:
import datetime
3Bây giờ chúng ta hãy gọi chức năng
t = datetime.time[1, 10, 20, 13]
4 để hiển thị chuỗi ở định dạng import datetime
9:import datetime
4Output:
import datetime
5Như bạn có thể thấy, việc chuyển đổi đã thành công!
Bạn có thể thấy rằng dấu gạch chéo phía trước "/" đã được sử dụng để tách các yếu tố khác nhau của chuỗi. Điều này cho biết phương thức
print['hour:', t.hour]
8 định dạng ngày của chúng tôi là gì, trong trường hợp của chúng tôi "/" được sử dụng làm dấu phân cách.Nhưng điều gì sẽ xảy ra nếu ngày/tháng/năm bị tách ra bởi một "-"? Đây là cách bạn xử lý điều đó:
import datetime
6Output:
import datetime
5Và một lần nữa, nhờ trình xác định định dạng, phương thức
print['hour:', t.hour]
8 có thể phân tích ngày của chúng tôi và chuyển đổi nó thành đối tượng ngày.Sự kết luận
Trong bài viết này, chúng tôi đã nghiên cứu cách định dạng ngày trong Python. Chúng tôi đã thấy làm thế nào mô -đun
import datetime
9 trong Python có thể được sử dụng để thao tác các giá trị ngày và thời gian. Mô -đun chứa một số lớp có thể được sử dụng cho mục đích này. Ví dụ: lớp t = datetime.time[1, 10, 20, 13]
1 được sử dụng để biểu diễn các giá trị thời gian trong khi lớp t = datetime.time[1, 10, 20, 13]
5 được sử dụng để biểu diễn các giá trị ngày lịch.