Sử dụng tập lệnh Python, tôi cần đọc một tệp CVS trong đó ngày được định hình là DD/mm/yyyy và chuyển đổi chúng thành yyyy-mm-dd trước khi lưu điều này vào cơ sở dữ liệu SQLite.
Điều này gần như hoạt động, nhưng thất bại vì tôi không cung cấp thời gian:
from datetime import datetime
lastconnection = datetime.strptime["21/12/2008", "%Y-%m-%d"]
#ValueError: time data did not match format: data=21/12/2008 fmt=%Y-%m-%d
print lastconnection
Tôi giả sử có một phương thức trong đối tượng DateTime để thực hiện chuyển đổi này rất dễ dàng, nhưng tôi không thể tìm thấy một ví dụ về cách thực hiện. Cảm ơn bạn.
hỏi ngày 2 tháng 2 năm 2009 lúc 10:01Feb 2, 2009 at 10:01
Mã ví dụ của bạn là sai. Những công việc này:
import datetime
datetime.datetime.strptime["21/12/2008", "%d/%m/%Y"].strftime["%Y-%m-%d"]
Cuộc gọi đến Strptime [] phân tích đối số đầu tiên theo định dạng được chỉ định trong lần thứ hai, vì vậy hai người đó cần phải khớp. Sau đó, bạn có thể gọi strftime [] để định dạng kết quả vào định dạng cuối cùng mong muốn.
Hans Z.
47.7K11 Huy hiệu vàng96 Huy hiệu bạc111 Huy hiệu đồng11 gold badges96 silver badges111 bronze badges
Đã trả lời ngày 2 tháng 2 năm 2009 lúc 10:09Feb 2, 2009 at 10:09
Khả năng thư giãnunwind
383K64 Huy hiệu vàng462 Huy hiệu bạc595 Huy hiệu Đồng64 gold badges462 silver badges595 bronze badges
1
Trước tiên, bạn cần chuyển đổi chuỗi thành Tuple DateTime, sau đó chuyển đổi bộ dữ liệu đó thành chuỗi, nó sẽ như thế này:
lastconnection = datetime.strptime["21/12/2008", "%d/%m/%Y"].strftime['%Y-%m-%d']
Đã trả lời ngày 2 tháng 2 năm 2009 lúc 10:07Feb 2, 2009 at 10:07
SilentghostsilentghostSilentGhost
294K64 Huy hiệu vàng301 Huy hiệu bạc291 Huy hiệu Đồng64 gold badges301 silver badges291 bronze badges
1
Tôi mới lập trình. Tôi muốn chuyển đổi từ
import datetime
datetime.datetime.strptime["21/12/2008", "%d/%m/%Y"].strftime["%Y-%m-%d"]
1 sang import datetime
datetime.datetime.strptime["21/12/2008", "%d/%m/%Y"].strftime["%Y-%m-%d"]
2 để in ra một ngày ở định dạng mà mọi người trong phần của tôi sử dụng và nhận ra.Câu trả lời được chấp nhận ở trên đã giúp tôi đi đúng hướng.
Câu trả lời tôi đã kết thúc với vấn đề của mình là:
import datetime
today_date = datetime.date.today[]
print[today_date]
new_today_date = today_date.strftime["%d/%m/%Y"]
print [new_today_date]
Hai dòng đầu tiên sau khi tuyên bố nhập khẩu đưa ra ngày hôm nay ở định dạng Hoa Kỳ [2017-01-26]. Hai dòng cuối cùng chuyển đổi nó thành định dạng được công nhận ở Anh và các quốc gia khác [26/01/2017].
Bạn có thể rút ngắn mã này, nhưng tôi đã để nó như là vì nó hữu ích cho tôi khi mới bắt đầu. Tôi hy vọng điều này giúp các lập trình viên mới bắt đầu khác bắt đầu!
Siha
7.16212 Huy hiệu vàng32 Huy hiệu bạc42 Huy hiệu Đồng12 gold badges32 silver badges42 bronze badges
Đã trả lời ngày 26 tháng 1 năm 2017 lúc 12:37Jan 26, 2017 at 12:37
MarkmarkMark
3754 Huy hiệu bạc10 Huy hiệu Đồng4 silver badges10 bronze badges
2
Có ai khác nghĩ rằng đó là một sự lãng phí để chuyển đổi các chuỗi này cho đến ngày/thời gian cho những gì, cuối cùng, một chuyển đổi văn bản đơn giản? Nếu bạn chắc chắn rằng ngày đến sẽ hợp lệ, bạn chỉ có thể sử dụng:
>>> ddmmyyyy = "21/12/2008"
>>> yyyymmdd = ddmmyyyy[6:] + "-" + ddmmyyyy[3:5] + "-" + ddmmyyyy[:2]
>>> yyyymmdd
'2008-12-21'
Điều này gần như chắc chắn sẽ nhanh hơn so với chuyển đổi sang và từ một ngày.
Đã trả lời ngày 2 tháng 2 năm 2009 lúc 10:53Feb 2, 2009 at 10:53
Paxdiablopaxdiablopaxdiablo
827K227 Huy hiệu vàng1549 Huy hiệu bạc1917 Huy hiệu đồng227 gold badges1549 silver badges1917 bronze badges
2
#case_date= 03/31/2020
#Above is the value stored in case_date in format[mm/dd/yyyy ]
demo=case_date.split["/"]
new_case_date = demo[1]+"-"+demo[0]+"-"+demo[2]
#new format of date is [dd/mm/yyyy] test by printing it
print[new_case_date]
Đã trả lời ngày 10 tháng 4 năm 2020 lúc 13:19Apr 10, 2020 at 13:19
Nếu bạn cần chuyển đổi toàn bộ cột [từ
import datetime
datetime.datetime.strptime["21/12/2008", "%d/%m/%Y"].strftime["%Y-%m-%d"]
3 import datetime
datetime.datetime.strptime["21/12/2008", "%d/%m/%Y"].strftime["%Y-%m-%d"]
4], trước tiên hãy chuyển đổi nó [import datetime
datetime.datetime.strptime["21/12/2008", "%d/%m/%Y"].strftime["%Y-%m-%d"]
3 import datetime
datetime.datetime.strptime["21/12/2008", "%d/%m/%Y"].strftime["%Y-%m-%d"]
6] sang định dạng import datetime
datetime.datetime.strptime["21/12/2008", "%d/%m/%Y"].strftime["%Y-%m-%d"]
7 bằng cách sử dụng import datetime
datetime.datetime.strptime["21/12/2008", "%d/%m/%Y"].strftime["%Y-%m-%d"]
8 và sau đó sử dụng import datetime
datetime.datetime.strptime["21/12/2008", "%d/%m/%Y"].strftime["%Y-%m-%d"]
9:def conv_dates_series[df, col, old_date_format, new_date_format]:
df[col] = pd.to_datetime[df[col], format=old_date_format].dt.strftime[new_date_format]
return df
Sử dụng mẫu:import pandas as pd
test_df = pd.DataFrame[{"Dates": ["1900-01-01", "1999-12-31"]}]
old_date_format='%Y-%m-%d'
new_date_format='%d/%m/%Y'
conv_dates_series[test_df, "Dates", old_date_format, new_date_format]
Dates
0 01/01/1900
1 31/12/1999
Đã trả lời ngày 5 tháng 4 năm 2020 lúc 19:10Apr 5, 2020 at 19:10
Mirekphdmirekphdmirekphd
3.27025 Huy hiệu bạc44 Huy hiệu đồng25 silver badges44 bronze badges
Cách đơn giản nhất
Trong khi đọc tệp CSV, hãy đặt một đối số
lastconnection = datetime.strptime["21/12/2008", "%d/%m/%Y"].strftime['%Y-%m-%d']
0df = pd.read_csv["sample.csv", parse_dates=['column_name']]
Điều này sẽ chuyển đổi ngày của cột được đề cập thành định dạng Yyyy-MM-DD
Josef
2.3401 Huy hiệu vàng20 Huy hiệu bạc22 Huy hiệu đồng1 gold badge20 silver badges22 bronze badges
Đã trả lời ngày 9 tháng 5 năm 2021 lúc 8:16May 9, 2021 at 8:16
Chuyển đổi định dạng ngày dd/mm/yyyy sang yyyy-mm-dd Theo câu hỏi của bạn, bạn có thể sử dụng điều này:
from datetime import datetime
lastconnection = datetime.strptime["21/12/2008", "%d/%m/%Y"].strftime["%Y-%m-%d"]
print[lastconnection]
Đã trả lời ngày 2 tháng 11 năm 2021 lúc 9:42Nov 2, 2021 at 9:42
RokidguptarokidguptaRokiDGupta
3311 Huy hiệu vàng6 Huy hiệu bạc13 Huy hiệu đồng1 gold badge6 silver badges13 bronze badges
1 là khung dữ liệu của bạnlastconnection = datetime.strptime["21/12/2008", "%d/%m/%Y"].strftime['%Y-%m-%d']
2 là cột mà bạn muốn thay đổilastconnection = datetime.strptime["21/12/2008", "%d/%m/%Y"].strftime['%Y-%m-%d']
Cột này phải có trong kiểu dữ liệu
lastconnection = datetime.strptime["21/12/2008", "%d/%m/%Y"].strftime['%Y-%m-%d']
3.import datetime
datetime.datetime.strptime["21/12/2008", "%d/%m/%Y"].strftime["%Y-%m-%d"]
0
Peter Csala
12.6K15 Huy hiệu vàng25 Huy hiệu bạc56 Huy hiệu đồng15 gold badges25 silver badges56 bronze badges
Đã trả lời ngày 30 tháng 12 năm 2021 lúc 8:33Dec 30, 2021 at 8:33
1