Chuyển đổi yy thành yyyy

Tôi biết bạn đang ở đây vì bạn đang gặp vấn đề về thay đổi định dạng ngày tháng trong Python thì đây là nơi tốt nhất để bạn có thể tìm ra cách tốt nhất để giải quyết vấn đề

Nào, hãy tiến lên phía trước để tìm những thủ thuật tuyệt vời để giải quyết vấn đề

Để thay đổi định dạng thời gian và ngày tháng trong Python, trước tiên chúng ta phải nhập mô-đun datetime như hình bên dưới

import datetime

Sau khi nhập mô-đun ngày giờ Python, chúng ta phải cung cấp đầu vào thời gian của ngày trong bất kỳ biến nào

Ở đây tôi coi nó là date_input và đầu vào được đưa ra ở định dạng YYYYMMDD

i. date_input=YYYYMMDD

date_input = '20190707'
datetimeobject = datetime.strptime(date_input,'%Y%m%d')

Bây giờ chúng ta sẽ chuyển đổi date_input sang định dạng mới. Định dạng mới của ngày phải được lưu trong một biến khác nói new_format

Định dạng ngày mới là DD-MM-YYYY

i. e new_format=DD-MM-YYYY

Ở đây, trong đoạn mã dưới đây, strptime là một từ khóa cung cấp các chức năng khác nhau về thời gian và ngày tháng

new_format = datetimeobject.strftime('%m-%d-%Y')
print(new_format)

ĐẦU RA

07-07-2019

Định dạng MM-DD-YYYY

Bây giờ chúng ta sẽ chuyển đổi date_input sang một định dạng mới khác. Định dạng ngày mới này phải được lưu trong một biến khác có tên new_format_1

Định dạng ngày mới là DD/MM/YYYY

i. e new_format_1=DD/MM/YYYY

new_format_1 = datetimeobject.strftime('%m/%d/%Y')
print (new_format_1)

ĐẦU RA

07-07-2019

 

Hãy truy cập hướng dẫn khác của tôi về Python

  • Chương trình Python để kiểm tra xem ngày đã cho có hợp lệ hay không

7 phản hồi cho “Cách thay đổi định dạng ngày tháng trong Python”

  1. Sumit Gupta nói.

    Cảm ơn vì đã chia sẻ thông tin. Đây là một cách rất dễ dàng để giải thích câu trả lời

  2. Shashank Gupta nói.

    Tôi nhận được kết quả từ “datetime. ngày giờ. Hiện nay(). strftime(“%x”)” “MM/DD/YYYY”

    tôi muốn nó là DD/MM/YYYY

    Hãy giúp tôi

    • Vuta Raghu nói.

      Xin chào Shashank Gupta
      Chúng tôi có thể thay đổi định dạng bằng mã bên dưới
      new_format_1 = đối tượng ngày giờ. strftime(‘%d/%m/%Y’)
      in (new_format_1)

      Ở đây tôi chỉ hoán đổi vị trí của d và m

      Chúng tôi cũng có thể sử dụng khái niệm cắt chuỗi để có được đầu ra mong muốn

  3. Alfons Làm lại nói.

    Xin chào,

    tôi có một Khung dữ liệu Pandas với cấu trúc sau [ID. NGÀY]

    Ngày có định dạng dd/mm/yyyy

    Tôi cần định dạng lại cột 'NGÀY' thành định dạng yyyymm

    Làm thế nào tôi có thể chấm nó?

  4. Himani nói.

    Tôi có ngày trong cột ở định dạng khác bằng cách sử dụng – và / , tôi muốn ngày của mình ở định dạng mm-dd-yyyy. Làm thế nào để đạt được điều này?

  5. C nói.

    Đây là một người đàn ông tuyệt vời, nhưng làm cách nào để tôi thực hiện điều đó từ CSV?

  6. Ajhamirtha nói.

    Tôi cần chuyển đổi định dạng ‘DD-MM-YYYY’ (ngày) thành ‘DD-MM-YY'(ngày) trong ô excel. Tôi đã sử dụng strftime, nhưng đầu ra ở dạng chuỗi. Tôi cần đối tượng ngày ở định dạng dd-mm-yy

    Bạn có thể đã quen thuộc với các kiểu dữ liệu khác nhau trong Python như số nguyên, số float, chuỗi, v.v. Tuy nhiên, đôi khi bạn đang phát triển tập lệnh hoặc thuật toán học máy, bạn nên sử dụng ngày và giờ. Trong cuộc sống hàng ngày, chúng ta có thể biểu diễn ngày và giờ ở nhiều định dạng khác nhau, ví dụ:

    datetime.datetime(2000, 2, 3, 5, 35, 2)
    8,
    datetime.datetime(2000, 2, 3, 5, 35, 2)
    9,
    datetime(year=2000, month=2, day=3, hour=5, minute=35, second=2)
    0 hoặc
    datetime(year=2000, month=2, day=3, hour=5, minute=35, second=2)
    1. Chúng sử dụng kết hợp số nguyên và chuỗi hoặc bạn cũng có thể sử dụng số float để biểu thị một phần của ngày, phút, v.v.

    Nhưng đây không phải là biến chứng duy nhất. Thêm vào danh sách này các múi giờ khác nhau, giờ tiết kiệm ánh sáng ban ngày, các quy ước định dạng thời gian khác nhau (ở Hoa Kỳ là ngày 23/07/2022 và ở Châu Âu là ngày 23/07/2023), v.v.

    Máy tính yêu cầu độ chính xác rõ ràng khi chúng ta bảo chúng phải làm gì, nhưng ngày và giờ lại là một thách thức. Rất may, Python có mô-đun

    datetime(year=2000, month=2, day=3, hour=5, minute=35, second=2)
    2 cho phép chúng ta dễ dàng thao tác với các đối tượng biểu thị ngày và giờ

    Trong hướng dẫn Python

    datetime(year=2000, month=2, day=3, hour=5, minute=35, second=2)
    2 này, chúng ta sẽ tìm hiểu những điều sau

    1. Công dụng của mô-đun
      datetime(year=2000, month=2, day=3, hour=5, minute=35, second=2)
      2 trong Python
    2. Chuyển đổi một chuỗi thành một đối tượng
      datetime(year=2000, month=2, day=3, hour=5, minute=35, second=2)
      2 và ngược lại bằng cách sử dụng các hàm
      datetime(year=2000, month=2, day=3, hour=5, minute=35, second=2)
      2 của Python
    3. Trích xuất ngày và giờ từ một đối tượng
      datetime(year=2000, month=2, day=3, hour=5, minute=35, second=2)
      2
    4. Làm việc với dấu thời gian
    5. Thực hiện các phép toán số học về ngày và giờ
    6. Làm việc với múi giờ
    7. Cuối cùng, tạo đồng hồ đếm ngược để xác định thời gian còn lại cho đến Năm mới 2023 (tại Thành phố New York. )

    Hãy bắt đầu làm việc với ngày và giờ trong Python

    Ghi chú. Nếu một đoạn mã không có câu lệnh

    datetime(year=2000, month=2, day=3, hour=5, minute=35, second=2)
    8, giả sử rằng lớp/hàm được sử dụng trong mã đã được nhập

    Làm cách nào để sử dụng datetime trong Python?

    Như chúng tôi đã nói trước đó, biểu thị ngày và giờ trong lập trình là một thách thức. Trước hết, chúng ta phải trình bày chúng theo một định dạng chuẩn, được chấp nhận rộng rãi. May mắn thay, Tổ chức Tiêu chuẩn hóa Quốc tế (ISO) đã phát triển một tiêu chuẩn toàn cầu ISO 8601, đại diện cho các đối tượng liên quan đến ngày và giờ là

    datetime(year=2000, month=2, day=3, hour=5, minute=35, second=2)
    9 với thông tin nằm trong khoảng từ quan trọng nhất (năm,
    datetime.datetime(2000, 2, 3, 5, 35, 2)
    0) đến ít quan trọng nhất (giây,
    datetime.datetime(2000, 2, 3, 5, 35, 2)
    1). Mỗi phần của định dạng này được biểu thị dưới dạng số có bốn hoặc hai chữ số

    Mô-đun

    datetime(year=2000, month=2, day=3, hour=5, minute=35, second=2)
    2 trong Python có 5 lớp chính (các phần của mô-đun)

    • datetime.datetime(2000, 2, 3, 5, 35, 2)
      3 để thao tác đối tượng ngày tháng
    • datetime.datetime(2000, 2, 3, 5, 35, 2)
      4 để điều khiển các đối tượng thời gian
    • datetime(year=2000, month=2, day=3, hour=5, minute=35, second=2)
      2 là sự kết hợp của
      datetime.datetime(2000, 2, 3, 5, 35, 2)
      3 và
      datetime.datetime(2000, 2, 3, 5, 35, 2)
      4
    • datetime.datetime(2000, 2, 3, 5, 35, 2)
      8 cho phép chúng tôi làm việc với thời lượng
    • datetime.datetime(2000, 2, 3, 5, 35, 2)
      9 cho phép chúng tôi làm việc với các múi giờ

    Ngoài ra, chúng tôi sẽ sử dụng mô-đun

    datetime.date(2000, 2, 3)
    00, cung cấp cho chúng tôi cách làm việc hiện đại với các múi giờ và gói
    datetime.date(2000, 2, 3)
    01, chứa nhiều chức năng hữu ích để làm việc với ngày và giờ

    Hãy nhập mô-đun

    datetime(year=2000, month=2, day=3, hour=5, minute=35, second=2)
    2 và tạo các đối tượng ngày và giờ đầu tiên của chúng ta

    # From the datetime module import date
    from datetime import date
    
    # Create a date object of 2000-02-03
    date(2000, 2, 3)
    datetime.date(2000, 2, 3)

    Trong đoạn mã trên, chúng tôi đã nhập lớp

    datetime.datetime(2000, 2, 3, 5, 35, 2)
    3 từ mô-đun và sau đó tạo một đối tượng
    datetime.date(2000, 2, 3)
    04 của ngày 3 tháng 2 năm 2000. Chúng tôi có thể lưu ý rằng thứ tự các số mà chúng tôi sử dụng để tạo đối tượng này hoàn toàn giống như trong ISO 8061 (nhưng chúng tôi bỏ qua các số 0 và chỉ viết các số có một chữ số cho tháng và ngày)

    Viết mã là tất cả về thử nghiệm, vì vậy, giả sử chúng ta muốn tạo một đối tượng 2000-26-03

    # Create a date object of 2000-26-03
    date(2000, 26, 3)
    ---------------------------------------------------------------------------
    
    ValueError                                Traceback (most recent call last)
    
    Input In [2], in 
          1 # Create a date object of 2000-26-03
    ----> 2 date(2000, 26, 3)
    
    ValueError: month must be in 1..12

    Chúng tôi nhận được

    datetime.date(2000, 2, 3)
    05, điều này hợp lý vì không có tháng 26 trong lịch. Chức năng này tuân thủ nghiêm ngặt định dạng ISO 8601. Để thực hành, hãy thêm nhiều đối số hơn vào hàm
    datetime.datetime(2000, 2, 3, 5, 35, 2)
    3 và lưu ý điều gì sẽ xảy ra

    Hãy xem cách chúng ta có thể tạo một đối tượng

    datetime.date(2000, 2, 3)
    07

    # From the datetime module import time
    from datetime import time
    
    # Create a time object of 05:35:02
    time(5, 35, 2)
    datetime.time(5, 35, 2)

    Chúng tôi đã thành công và bạn có thể đoán rằng chức năng này cũng tuân theo định dạng ISO 8061. Bạn có thể phá vỡ nó như chúng ta đã làm trước đây với hàm

    datetime.datetime(2000, 2, 3, 5, 35, 2)
    3 không?

    Bây giờ, nếu chúng ta muốn cả ngày và giờ trong một đối tượng thì sao?

    # From the datetime module import datetime
    from datetime import datetime
    
    # Create a datetime object of 2000-02-03 05:35:02
    datetime(2000, 2, 3, 5, 35, 2)
    datetime.datetime(2000, 2, 3, 5, 35, 2)

    Tuyệt vời, chúng ta có đối tượng

    datetime(year=2000, month=2, day=3, hour=5, minute=35, second=2)
    2. Chúng ta cũng có thể rõ ràng hơn và chuyển đối số từ khóa cho hàm tạo
    datetime(year=2000, month=2, day=3, hour=5, minute=35, second=2)
    2

    datetime(year=2000, month=2, day=3, hour=5, minute=35, second=2)
    datetime.datetime(2000, 2, 3, 5, 35, 2)

    Điều gì sẽ xảy ra nếu chúng ta chỉ truyền vào ba đối số (năm, tháng và ngày)?

    datetime.date(2000, 2, 3)
    0____27_______1

    Chúng ta có thể thấy rằng bây giờ có hai số không trong đối tượng đại diện (tương ứng) cho giờ và phút. Giây, trong trường hợp này, được bỏ qua

    Trong nhiều tình huống, chúng tôi muốn biết thời gian chính xác tại thời điểm này. Chúng ta có thể sử dụng phương thức

    datetime.date(2000, 2, 3)
    12 của lớp
    datetime(year=2000, month=2, day=3, hour=5, minute=35, second=2)
    2

    datetime.date(2000, 2, 3)
    2______27_______3

    Chúng tôi nhận được một đối tượng

    datetime(year=2000, month=2, day=3, hour=5, minute=35, second=2)
    2. Ở đây số cuối cùng là micro giây

    Nếu chúng ta chỉ cần ngày hôm nay, chúng ta có thể sử dụng phương thức

    datetime.date(2000, 2, 3)
    15 từ lớp
    datetime.datetime(2000, 2, 3, 5, 35, 2)
    3

    datetime.date(2000, 2, 3)
    4
    datetime.date(2000, 2, 3)
    5

    Nếu chúng tôi chỉ cần thời gian, chúng tôi có thể viết

    datetime.date(2000, 2, 3)
    17, nhưng sẽ không được. Thay vào đó, chúng ta phải truy cập các thuộc tính
    datetime.date(2000, 2, 3)
    18,
    datetime.date(2000, 2, 3)
    19 và
    datetime.date(2000, 2, 3)
    20 của đối tượng
    datetime.date(2000, 2, 3)
    21 và chuyển chúng tới phương thức khởi tạo
    datetime.datetime(2000, 2, 3, 5, 35, 2)
    4

    datetime.date(2000, 2, 3)
    6_______27_______7

    Để thực hành, hãy lấy ngày từ đối tượng

    datetime(year=2000, month=2, day=3, hour=5, minute=35, second=2)
    2 trong Python (được gán cho biến
    datetime.date(2000, 2, 3)
    24)

    Chúng ta cũng có thể trích xuất số tuần và số ngày từ một đối tượng

    datetime(year=2000, month=2, day=3, hour=5, minute=35, second=2)
    2 bằng cách sử dụng hàm
    datetime.date(2000, 2, 3)
    26. Nó sẽ trả về một bộ gồm ba mục chứa năm ISO, số tuần và số ngày trong tuần

    datetime.date(2000, 2, 3)
    8
    datetime.date(2000, 2, 3)
    9

    Ở định dạng ISO, một tuần bắt đầu vào Thứ Hai và kết thúc vào Chủ nhật. Các ngày trong tuần được mã hóa bởi các số từ 1 (thứ hai) đến 7 (chủ nhật). Nếu chúng ta muốn truy cập một trong các phần tử bộ dữ liệu này, chúng ta sử dụng ký hiệu ngoặc

    # Create a date object of 2000-26-03
    date(2000, 26, 3)
    0____34_______1

    Trích xuất ngày từ chuỗi

    Trong khoa học dữ liệu và trong lập trình nói chung, chúng tôi chủ yếu làm việc với ngày và giờ được lưu trữ dưới dạng chuỗi ở hàng chục định dạng khác nhau, tùy thuộc vào khu vực, công ty hoặc mức độ chi tiết của thông tin chúng tôi cần. Đôi khi, chúng ta cần ngày và thời gian chính xác, nhưng trong những trường hợp khác, chúng ta chỉ cần năm và tháng. Làm cách nào chúng tôi có thể trích xuất dữ liệu chúng tôi cần từ một chuỗi để dễ dàng thao tác với nó dưới dạng đối tượng

    datetime(year=2000, month=2, day=3, hour=5, minute=35, second=2)
    2 (
    datetime.datetime(2000, 2, 3, 5, 35, 2)
    3,
    datetime.datetime(2000, 2, 3, 5, 35, 2)
    4)?

    fromisoformat() và isoformat()

    Hàm đầu tiên chúng ta sẽ học để chuyển đổi một chuỗi ngày tháng thành một đối tượng

    datetime.datetime(2000, 2, 3, 5, 35, 2)
    3 là
    datetime.date(2000, 2, 3)
    31. Chúng tôi gọi nó như vậy vì nó sử dụng định dạng ISO 8601 (tôi. e. ,
    datetime.date(2000, 2, 3)
    32). Hãy xem một ví dụ

    # Create a date object of 2000-26-03
    date(2000, 26, 3)
    2______34_______3

    Định dạng ISO cũng chứa thời gian, nhưng nếu chúng ta chuyển nó vào hàm, nó sẽ không hoạt động

    # Create a date object of 2000-26-03
    date(2000, 26, 3)
    4
    # Create a date object of 2000-26-03
    date(2000, 26, 3)
    5

    Tất nhiên, chúng ta cũng có thể thực hiện thao tác nghịch đảo và chuyển đổi đối tượng

    datetime(year=2000, month=2, day=3, hour=5, minute=35, second=2)
    2 thành chuỗi ngày ở định dạng ISO. Với mục đích này, chúng ta nên sử dụng
    datetime.date(2000, 2, 3)
    34

    # Create a date object of 2000-26-03
    date(2000, 26, 3)
    6_______34_______7

    strptime()

    Để giải quyết vấn đề

    datetime.date(2000, 2, 3)
    35 ở trên, chúng ta có thể sử dụng hàm
    datetime.date(2000, 2, 3)
    36 có thể chuyển đổi một chuỗi ngày/giờ tùy ý thành một đối tượng
    datetime(year=2000, month=2, day=3, hour=5, minute=35, second=2)
    2. Chuỗi của chúng ta không nhất thiết phải tuân theo định dạng ISO, nhưng chúng ta nên chỉ định phần nào của chuỗi đại diện cho đơn vị ngày hoặc giờ nào (năm, giờ, v.v. ). Hãy xem một ví dụ để làm rõ. Trước hết, chúng tôi sẽ sử dụng định dạng ISO nghiêm ngặt để chuyển đổi một chuỗi thành một đối tượng
    datetime(year=2000, month=2, day=3, hour=5, minute=35, second=2)
    2

    # Create a date object of 2000-26-03
    date(2000, 26, 3)
    8
    # Create a date object of 2000-26-03
    date(2000, 26, 3)
    9

    Trong dòng đầu tiên, chúng tôi tạo một chuỗi ngày/giờ. Trong dòng thứ hai, chúng tôi chỉ định định dạng của chuỗi bằng mã đặc biệt có chứa dấu phần trăm theo sau là ký tự mã hóa đơn vị ngày hoặc giờ. Cuối cùng, ở dòng thứ ba, chúng ta sử dụng hàm

    datetime.date(2000, 2, 3)
    36 để chuyển đổi chuỗi thành đối tượng
    datetime(year=2000, month=2, day=3, hour=5, minute=35, second=2)
    2. Hàm này nhận hai đối số. chuỗi và định dạng của chuỗi

    Mã chúng tôi sử dụng ở trên cũng có thể mã hóa các đơn vị ngày và giờ khác như ngày trong tuần, tên tháng, số tuần, v.v.

    MãVí dụDes mô tả%AMondayTên ngày đầy đủ trong tuần%BDecDeceanTên tháng đầy đủ%W2Số tuần (Thứ hai là ngày đầu tiên của tuần)

    Bạn có thể tham khảo trang web này để biết các mã khác được sử dụng trong Python

    Hãy xem thêm một vài ví dụ sử dụng các định dạng khác

    ---------------------------------------------------------------------------
    
    ValueError                                Traceback (most recent call last)
    
    Input In [2], in 
          1 # Create a date object of 2000-26-03
    ----> 2 date(2000, 26, 3)
    
    ValueError: month must be in 1..12
    0
    ---------------------------------------------------------------------------
    
    ValueError                                Traceback (most recent call last)
    
    Input In [2], in 
          1 # Create a date object of 2000-26-03
    ----> 2 date(2000, 26, 3)
    
    ValueError: month must be in 1..12
    1

    Như chúng ta có thể thấy ở trên, chuỗi đã được chuyển đổi thành công, nhưng chúng ta có thêm các số 0 biểu thị thời gian. Hãy xem một ví dụ sử dụng các mã khác

    ---------------------------------------------------------------------------
    
    ValueError                                Traceback (most recent call last)
    
    Input In [2], in 
          1 # Create a date object of 2000-26-03
    ----> 2 date(2000, 26, 3)
    
    ValueError: month must be in 1..12
    2
    ---------------------------------------------------------------------------
    
    ValueError                                Traceback (most recent call last)
    
    Input In [2], in 
          1 # Create a date object of 2000-26-03
    ----> 2 date(2000, 26, 3)
    
    ValueError: month must be in 1..12
    3

    Một lần nữa thành công. Lưu ý rằng định dạng chúng tôi xác định phải khớp với định dạng của chuỗi ngày. Do đó, nếu chúng ta có dấu cách, dấu hai chấm, dấu gạch ngang hoặc các ký tự khác để phân tách các đơn vị thời gian, thì chúng phải nằm trong chuỗi mã. Nếu không, Python sẽ ném một

    datetime.date(2000, 2, 3)
    35

    ---------------------------------------------------------------------------
    
    ValueError                                Traceback (most recent call last)
    
    Input In [2], in 
          1 # Create a date object of 2000-26-03
    ----> 2 date(2000, 26, 3)
    
    ValueError: month must be in 1..12
    4
    ---------------------------------------------------------------------------
    
    ValueError                                Traceback (most recent call last)
    
    Input In [2], in 
          1 # Create a date object of 2000-26-03
    ----> 2 date(2000, 26, 3)
    
    ValueError: month must be in 1..12
    5

    Ngay cả một khoảng trống bị thiếu cũng có thể gây ra lỗi

    Chuyển đổi đối tượng datetime thành chuỗi

    strftime()

    Trong Python, chúng ta cũng có thể chuyển đổi một đối tượng

    datetime(year=2000, month=2, day=3, hour=5, minute=35, second=2)
    2 thành một chuỗi bằng cách sử dụng hàm
    datetime.date(2000, 2, 3)
    43. Phải mất hai đối số. một đối tượng
    datetime(year=2000, month=2, day=3, hour=5, minute=35, second=2)
    2 và định dạng của chuỗi đầu ra

    ---------------------------------------------------------------------------
    
    ValueError                                Traceback (most recent call last)
    
    Input In [2], in 
          1 # Create a date object of 2000-26-03
    ----> 2 date(2000, 26, 3)
    
    ValueError: month must be in 1..12
    6
    ---------------------------------------------------------------------------
    
    ValueError                                Traceback (most recent call last)
    
    Input In [2], in 
          1 # Create a date object of 2000-26-03
    ----> 2 date(2000, 26, 3)
    
    ValueError: month must be in 1..12
    7

    Chúng tôi đã lấy cùng một đối tượng

    datetime(year=2000, month=2, day=3, hour=5, minute=35, second=2)
    2 và chuyển đổi nó thành hai định dạng khác nhau. Chúng tôi cũng có thể chỉ định các định dạng khác, chẳng hạn như tên tháng đầy đủ theo sau là ngày và năm

    ---------------------------------------------------------------------------
    
    ValueError                                Traceback (most recent call last)
    
    Input In [2], in 
          1 # Create a date object of 2000-26-03
    ----> 2 date(2000, 26, 3)
    
    ValueError: month must be in 1..12
    8
    ---------------------------------------------------------------------------
    
    ValueError                                Traceback (most recent call last)
    
    Input In [2], in 
          1 # Create a date object of 2000-26-03
    ----> 2 date(2000, 26, 3)
    
    ValueError: month must be in 1..12
    9

    Một cách khác để sử dụng

    datetime.date(2000, 2, 3)
    46 là đặt nó sau đối tượng
    datetime(year=2000, month=2, day=3, hour=5, minute=35, second=2)
    2

    # From the datetime module import time
    from datetime import time
    
    # Create a time object of 05:35:02
    time(5, 35, 2)
    0
    # From the datetime module import time
    from datetime import time
    
    # Create a time object of 05:35:02
    time(5, 35, 2)
    1

    Trong thực tế,

    datetime.date(2000, 2, 3)
    43 có thể hữu ích nếu chúng ta muốn trích xuất tên ngày trong tuần rơi vào ngày 31 tháng 12 trong các năm khác nhau

    # From the datetime module import time
    from datetime import time
    
    # Create a time object of 05:35:02
    time(5, 35, 2)
    2______39_______3

    Dấu thời gian

    Trong lập trình, thường thấy ngày và giờ được lưu trữ ở định dạng dấu thời gian Unix. Định dạng này đại diện cho bất kỳ ngày nào dưới dạng chữ số. Về cơ bản, dấu thời gian là một số giây được truyền từ Kỷ nguyên Unix bắt đầu từ 00. 00. 00 UTC (Giờ phối hợp quốc tế) vào ngày 1 tháng 1 năm 1970. Chúng ta có thể tính toán con số này bằng cách sử dụng hàm

    datetime.date(2000, 2, 3)
    49

    # From the datetime module import time
    from datetime import time
    
    # Create a time object of 05:35:02
    time(5, 35, 2)
    4_______39_______5

    1672441200 là số giây tính từ thời điểm bắt đầu kỷ nguyên Unix đến ngày 31 tháng 12 năm 2022

    Chúng ta có thể thực hiện thao tác nghịch đảo bằng cách sử dụng hàm

    datetime.date(2000, 2, 3)
    50

    # From the datetime module import time
    from datetime import time
    
    # Create a time object of 05:35:02
    time(5, 35, 2)
    6
    ---------------------------------------------------------------------------
    
    ValueError                                Traceback (most recent call last)
    
    Input In [2], in 
          1 # Create a date object of 2000-26-03
    ----> 2 date(2000, 26, 3)
    
    ValueError: month must be in 1..12
    1

    Các phép toán số học với ngày tháng

    Đôi khi, chúng ta có thể muốn tính toán sự khác biệt giữa hai ngày hoặc thực hiện các phép toán số học khác về ngày và giờ. May mắn thay, Python có nhiều công cụ trong bộ công cụ của nó để thực hiện các phép tính như vậy

    Các phép tính số học cơ bản

    Hoạt động đầu tiên chúng ta có thể thực hiện là tính toán sự khác biệt giữa hai ngày. Để làm điều này, chúng tôi sử dụng dấu trừ

    # From the datetime module import time
    from datetime import time
    
    # Create a time object of 05:35:02
    time(5, 35, 2)
    8
    # From the datetime module import time
    from datetime import time
    
    # Create a time object of 05:35:02
    time(5, 35, 2)
    9

    Hãy xem loại đối tượng mà

    datetime.date(2000, 2, 3)
    51 trả về

    datetime.time(5, 35, 2)
    0_______40_______1

    Loại đối tượng này là

    datetime.date(2000, 2, 3)
    52. Nó có chữ delta trong tên của nó, dùng để chỉ một chữ cái màu xanh lá cây delta, $\Delta$, trong khoa học và kỹ thuật, mô tả một sự thay đổi. Thật vậy, ở đây nó đại diện cho một sự thay đổi (sự khác biệt) trong thời gian

    Nếu chúng ta chỉ quan tâm đến số ngày giữa hai ngày thì sao?

    datetime.time(5, 35, 2)
    2_______40_______3

    múi giờ()

    Bây giờ chúng ta đã biết về đối tượng

    datetime.datetime(2000, 2, 3, 5, 35, 2)
    8, đã đến lúc giới thiệu hàm
    datetime.date(2000, 2, 3)
    56. Nó cho phép chúng ta thực hiện nhiều phép tính số học trên các đối tượng thời gian bằng cách cộng trừ các đơn vị thời gian như ngày, năm, tuần, giây, v.v. Ví dụ: chúng ta có thể muốn biết ngày thứ mấy trong tuần là 30 ngày kể từ bây giờ. Để làm như vậy, chúng ta phải tạo một đối tượng đại diện cho thời gian hiện tại và một đối tượng
    datetime.datetime(2000, 2, 3, 5, 35, 2)
    8 xác định lượng thời gian chúng ta thêm vào đó

    datetime.time(5, 35, 2)
    4
    datetime.time(5, 35, 2)
    5

    Nếu chúng tôi kiểm tra trang trợ giúp của hàm

    datetime.datetime(2000, 2, 3, 5, 35, 2)
    8 (
    datetime.date(2000, 2, 3)
    59), chúng tôi sẽ thấy rằng nó có các đối số sau.
    datetime.date(2000, 2, 3)
    60. Vì vậy, bạn có thể thực hành cộng hoặc trừ các đơn vị thời gian khác cho một ngày. Ví dụ: chúng ta có thể tính thời gian 12 giờ trước Tết 2030

    datetime.time(5, 35, 2)
    6_______40_______7

    Chúng ta cũng có thể kết hợp nhiều đối số của hàm

    datetime.date(2000, 2, 3)
    56 để tìm ra thời gian cụ thể hơn. Ví dụ, thời gian sẽ là bao nhiêu trong 27 ngày, 3 giờ và 45 phút kể từ bây giờ?

    datetime.time(5, 35, 2)
    8
    datetime.time(5, 35, 2)
    9

    tương đốidelta()

    Thật không may, chúng tôi có thể thấy từ trang trợ giúp rằng chức năng này không cho phép chúng tôi sử dụng tháng hoặc năm. Để khắc phục hạn chế này, chúng ta có thể sử dụng hàm

    datetime.date(2000, 2, 3)
    62 từ gói
    datetime.date(2000, 2, 3)
    01. Chức năng này rất giống với
    datetime.date(2000, 2, 3)
    56, nhưng nó mở rộng chức năng của nó

    Ví dụ: chúng tôi muốn trừ 2 năm, 3 tháng, 4 ngày và 5 giờ từ thời điểm hiện tại

    # From the datetime module import datetime
    from datetime import datetime
    
    # Create a datetime object of 2000-02-03 05:35:02
    datetime(2000, 2, 3, 5, 35, 2)
    0____43_______1

    Chúng ta cũng có thể sử dụng

    datetime.date(2000, 2, 3)
    65 để tính toán sự khác biệt giữa hai đối tượng
    datetime(year=2000, month=2, day=3, hour=5, minute=35, second=2)
    2

    # From the datetime module import datetime
    from datetime import datetime
    
    # Create a datetime object of 2000-02-03 05:35:02
    datetime(2000, 2, 3, 5, 35, 2)
    2______43_______3

    Các phép tính số học này có vẻ rất trừu tượng và không thực tế, nhưng thực ra, chúng rất hữu ích trong nhiều ứng dụng. Một kịch bản như vậy có thể giống như sau

    Giả sử, một thao tác nhất định trong tập lệnh của chúng tôi chỉ được thực hiện 30 ngày trước một ngày cụ thể. Chúng ta có thể định nghĩa một biến chứa thời gian hiện tại và thêm một đối tượng

    datetime.datetime(2000, 2, 3, 5, 35, 2)
    8 của 30 ngày vào đó. Nếu hôm nay là ngày, hoạt động sẽ được gợi lên

    Mặt khác, hãy tưởng tượng chúng tôi đang làm việc với bộ dữ liệu bằng gấu trúc và một trong các cột chứa một số ngày. Hãy tưởng tượng rằng chúng tôi có một bộ dữ liệu nắm giữ lợi nhuận của công ty chúng tôi vào mỗi ngày trong năm. Chúng tôi muốn tạo một tập dữ liệu khác sẽ giữ ngày chính xác một năm kể từ ngày hiện tại và lợi nhuận dự đoán vào mỗi ngày đó. Chúng tôi nhất định sử dụng các phép tính số học vào ngày tháng

    Sớm hay muộn, bạn sẽ gặp ngày và giờ trong một trong các dự án khoa học dữ liệu của mình. Khi bạn làm như vậy, hãy quay lại hướng dẫn này

    Làm việc với Múi giờ

    Như chúng tôi đã đề cập trong phần giới thiệu, một trong những vấn đề khi làm việc với thời gian trong lập trình là xử lý các múi giờ. Họ có thể có khác nhau. Chúng ta cũng nên lưu ý rằng một số khu vực triển khai giờ mùa hè (DST) trong khi những khu vực khác thì không

    Python phân biệt 2 loại đối tượng ngày và giờ. . Một đối tượng ngây thơ không chứa bất kỳ thông tin nào về múi giờ và một đối tượng nhận thức sẽ giữ nó

    Trước hết, hãy nhìn vào một đối tượng thời gian ngây thơ

    # From the datetime module import datetime
    from datetime import datetime
    
    # Create a datetime object of 2000-02-03 05:35:02
    datetime(2000, 2, 3, 5, 35, 2)
    4
    # From the datetime module import datetime
    from datetime import datetime
    
    # Create a datetime object of 2000-02-03 05:35:02
    datetime(2000, 2, 3, 5, 35, 2)
    5

    Từ Python 3. 9, chúng tôi có triển khai cụ thể các múi giờ bằng cách sử dụng cơ sở dữ liệu Cơ quan cấp số được gán trên Internet. Mô-đun thực hiện chức năng này được gọi là

    datetime.date(2000, 2, 3)
    00. Lưu ý rằng nếu bạn đang sử dụng các phiên bản trước của Python, bạn có thể sử dụng các gói
    datetime.date(2000, 2, 3)
    69 hoặc
    datetime.date(2000, 2, 3)
    01

    Hãy tạo một đối tượng

    datetime(year=2000, month=2, day=3, hour=5, minute=35, second=2)
    2 nhận biết bằng cách sử dụng
    datetime.date(2000, 2, 3)
    00 và đặc biệt là lớp
    datetime.date(2000, 2, 3)
    73, đây là một triển khai của lớp trừu tượng
    datetime.date(2000, 2, 3)
    74

    # From the datetime module import datetime
    from datetime import datetime
    
    # Create a datetime object of 2000-02-03 05:35:02
    datetime(2000, 2, 3, 5, 35, 2)
    6_______43_______7

    Chúng ta có thể thấy rằng một đối tượng

    datetime(year=2000, month=2, day=3, hour=5, minute=35, second=2)
    2 nhận biết có thông tin về múi giờ (được triển khai như một đối tượng
    datetime.date(2000, 2, 3)
    76)

    Hãy xem xét một vài ví dụ. Chúng tôi muốn xác định thời gian hiện tại ở Trung Âu và California

    Trước hết, chúng tôi có thể liệt kê tất cả các múi giờ có sẵn trong

    datetime.date(2000, 2, 3)
    00

    # From the datetime module import datetime
    from datetime import datetime
    
    # Create a datetime object of 2000-02-03 05:35:02
    datetime(2000, 2, 3, 5, 35, 2)
    8
    # From the datetime module import datetime
    from datetime import datetime
    
    # Create a datetime object of 2000-02-03 05:35:02
    datetime(2000, 2, 3, 5, 35, 2)
    9

    Bây giờ chúng ta có thể sử dụng

    datetime.date(2000, 2, 3)
    73 để xác định thời gian hiện tại ở các vùng khác nhau

    datetime.datetime(2000, 2, 3, 5, 35, 2)
    0
    datetime.datetime(2000, 2, 3, 5, 35, 2)
    1

    Hãy in

    datetime.date(2000, 2, 3)
    79

    datetime.datetime(2000, 2, 3, 5, 35, 2)
    2_______5_______3

    Chúng tôi thấy rằng có

    datetime.date(2000, 2, 3)
    80, biểu thị phần bù UTC. Thật vậy, múi giờ CET nhanh hơn UTC một giờ

    Hơn nữa, lớp

    datetime.date(2000, 2, 3)
    73 xử lý thời gian tiết kiệm ánh sáng ban ngày. Ví dụ: chúng ta có thể thêm một ngày (24 giờ) vào một ngày khi thay đổi DST xảy ra. Ở Hoa Kỳ, vào năm 2022, nó sẽ diễn ra vào ngày 5 tháng 11 (đồng hồ quay ngược)

    datetime.datetime(2000, 2, 3, 5, 35, 2)
    4_______5_______5

    Như chúng ta có thể thấy, phần bù đã thay đổi từ

    datetime.date(2000, 2, 3)
    82 thành
    datetime.date(2000, 2, 3)
    83, nhưng thời gian vẫn giữ nguyên (15. 00)

    Đồng hồ đếm ngược đến năm mới 2023 tại thành phố New York

    Quảng trường Thời đại ở New Your City thu hút hàng ngàn người trong đêm giao thừa. Hãy áp dụng mọi thứ chúng ta đã học được cho đến nay để tạo đồng hồ đếm ngược đến Giao thừa tại Quảng trường Thời đại

    Ở đây, chúng tôi sẽ sử dụng

    datetime.date(2000, 2, 3)
    84 từ gói
    datetime.date(2000, 2, 3)
    01, cho phép chúng tôi đặt múi giờ địa phương để chứng minh tiện ích của gói
    datetime.date(2000, 2, 3)
    01. Tuy nhiên, chúng ta cũng có thể sử dụng múi giờ
    datetime.date(2000, 2, 3)
    87 từ
    datetime.date(2000, 2, 3)
    00 để làm điều tương tự

    datetime.datetime(2000, 2, 3, 5, 35, 2)
    6_______5_______7

    Chúng tôi đã bọc mã trong hàm

    datetime.date(2000, 2, 3)
    89 và bây giờ chúng tôi có thể sử dụng nó trong tệp
    datetime.date(2000, 2, 3)
    90. Trong tập lệnh này, chúng tôi đã làm việc với các múi giờ, tạo một đối tượng
    datetime(year=2000, month=2, day=3, hour=5, minute=35, second=2)
    2, chuyển đổi nó thành một chuỗi bằng cách sử dụng
    datetime.date(2000, 2, 3)
    43 và thậm chí truy cập các thuộc tính thời gian của một đối tượng
    datetime.date(2000, 2, 3)
    62

    Để thực hành, bạn có thể cải thiện kịch bản. Tôi đang viết hướng dẫn này vào năm 2022, vì vậy đối với tôi, năm mới vẫn chưa đến. Nếu bạn đang đọc nó trong những năm tới, bạn có thể cải thiện nó và tính đến thực tế là Năm mới 2023 đã đến. Bạn cũng có thể bao gồm thời gian còn lại cho đến Năm mới trong tương lai. Hoặc bạn có thể đếm thời gian đã trôi qua từ những năm mới trước đó. Bạn cũng có thể cập nhật tập lệnh bằng gói

    datetime.date(2000, 2, 3)
    69 để làm cho tập lệnh tương thích với các phiên bản Python cũ hơn (trước 3. 9). Điều đó tùy thuộc vào bạn bây giờ

    kết luận

    Đây là những gì chúng tôi đã đề cập trong hướng dẫn này

    • Các vấn đề với việc hiển thị ngày và giờ trên máy tính
    • Tạo các đối tượng
      datetime.datetime(2000, 2, 3, 5, 35, 2)
      3,
      datetime.datetime(2000, 2, 3, 5, 35, 2)
      4 và
      datetime(year=2000, month=2, day=3, hour=5, minute=35, second=2)
      2
    • Định dạng ngày chuẩn, ISO 8061
    • Trích xuất ngày từ chuỗi bằng cách sử dụng
      datetime.date(2000, 2, 3)
      98 và
      datetime.date(2000, 2, 3)
      36
    • Chuyển đổi các đối tượng
      datetime(year=2000, month=2, day=3, hour=5, minute=35, second=2)
      2 thành chuỗi bằng cách sử dụng
      datetime.date(2000, 2, 3)
      43
    • Dấu thời gian
    • Các phép tính số học với ngày tháng và đối tượng
      datetime.datetime(2000, 2, 3, 5, 35, 2)
      8
    • Xử lý các múi giờ trong Python với
    • Tạo đồng hồ đếm ngược đến năm mới 2023 tại thành phố New York

    Bây giờ bạn có rất nhiều công cụ trong bộ công cụ của mình và bạn có thể bắt đầu làm việc với ngày và giờ trong Python

    Vui lòng kết nối với tôi trên LinkedIn và GitHub. Mã hóa vui vẻ

    datetimepythonHướng dẫn

    Chuyển đổi yy thành yyyy

    Thông tin về các Tác giả

    Artur Sannikov

    Tôi là sinh viên Sinh học phân tử tại Đại học Padua, Ý quan tâm đến tin sinh học và phân tích dữ liệu

    Cách thay đổi định dạng ngày từ yyyy MM dd thành dd

    Biểu thức chính quy Python. Bài tập-25 có lời giải .
    Giải pháp mẫu. -
    Mã Python. nhập lại def change_date_format(dt). trở lại. sub(r'(\d{4})-(\d{1,2})-(\d{1,2})', '\\3-\\2-\\1', dt) dt1 . ",dt1) print("Ngày mới theo định dạng DD-MM-YYYY. ",change_date_format(dt1))

    Làm cách nào để chuyển đổi ngày giờ thành định dạng yyyy MM dd trong Python?

    YYYY-MM-DD . %Y có nghĩa là năm có bốn chữ số, %m biểu thị tháng có hai chữ số, %d mô tả ngày có hai chữ số, %F là phím tắt cho %Y-%m-%d. with str or the strftime method: %Y means four-digit year, %m presents two-digit month, %d describes two-digit day, %F is the shortcut for %Y-%m-%d .

    Làm cách nào để chuyển đổi chuỗi ngày thành ngày?

    Chuỗi Java đến ngày . Để học tốt khái niệm này, bạn nên truy cập các lớp DateFormat và SimpleDateFormat. using parse() method of DateFormat and SimpleDateFormat classes. To learn this concept well, you should visit DateFormat and SimpleDateFormat classes.

    Làm cách nào để chuyển đổi chuỗi tháng năm thành ngày trong Python?

    Chúng ta có thể chuyển đổi định dạng chuỗi thành ngày giờ bằng cách sử dụng hàm strptime() . Chúng tôi sẽ sử dụng định dạng '%Y/%m/%d' để lấy chuỗi thành datetime.