64
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.
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 lastconnectionTô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.9K11 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
384K64 Huy hiệu vàng463 Huy hiệu bạc595 Huy hiệu Đồng64 gold badges463 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
295K64 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.19112 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
828K227 Huy hiệu vàng1550 Huy hiệu bạc1918 Huy hiệu đồng227 gold badges1550 silver badges1918 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.29826 huy hiệu bạc44 Huy hiệu đồng26 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') 0
df = 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.3602 Huy hiệu vàng20 Huy hiệu bạc22 Huy hiệu đồng2 gold badges20 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
- lastconnection = datetime.strptime("21/12/2008", "%d/%m/%Y").strftime('%Y-%m-%d') 1 là khung dữ liệu của bạn
- lastconnection = datetime.strptime("21/12/2008", "%d/%m/%Y").strftime('%Y-%m-%d') 2 là cột mà bạn muốn thay đổi
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
Huy hiệu vàng 13K1515 gold badges25 silver badges60 bronze badges
Đã trả lời ngày 30 tháng 12 năm 2021 lúc 8:33Dec 30, 2021 at 8:33
1