Phân tích ngày từ chuỗi kí tự

Fish Shell:
Phân tích ngày từ chuỗi kí tự

Làm thế nào:

# Phân tích cú pháp ngày cơ bản sử dụng hàm `strptime`
set date_string "2023-04-15"
set -l format "%Y-%m-%d"
set -l parsed_date (string tolower (date -u --date=$date_string +"$format"))

echo $parsed_date # Kết quả: 2023-04-15
# Xử lý nhiều định dạng ngày bằng cách sử dụng switch
set date_string1 "15-04-2023"
set date_string2 "April 15, 2023"

function parse_date -a date_string
    switch $date_string
        case "*-*-*"
            date --date=$date_string +%Y-%m-%d
        case "* *, *"
            date --date=$date_string +%Y-%m-%d
    end
end

echo (parse_date $date_string1) # Kết quả: 2023-04-15
echo (parse_date $date_string2) # Kết quả: 2023-04-15

Tìm hiểu sâu

Fish Shell không có các hàm phân tích cú pháp ngày được tích hợp sẵn như một số ngôn ngữ khác. Thay vào đó, nó dựa vào các công cụ bên ngoài như date. Lệnh date rất linh hoạt, và với sự giúp đỡ từ strptime (phân tích cú pháp chuỗi thời gian), là một hàm thư viện chuẩn C, nó có thể xử lý nhiều định dạng ngày.

Trước datestrptime, lập trình viên viết bộ phân tích cú pháp tùy chỉnh—thường xuyên bị lỗi và phức tạp. Bây giờ, các công cụ xử lý các vấn đề về múi giờ và năm nhuận, giúp chúng ta tránh những phiền toái.

Có phương án thay thế? Chắc chắn, các ngôn ngữ kịch bản như Python có thư viện ngày-giờ mạnh mẽ như datetime. Nhưng Fish, với tư cách là một ‘shell’, thích sự nhẹ nhàng, các chương trình dòng lệnh cho công việc như thế này.

Trong các ví dụ của chúng tôi, chúng tôi đã sử dụng switch để chọn định dạng ngày để date phân tích cú pháp. Nó sạch sẽ và có thể mở rộng. Muốn thêm định dạng? Thêm nhiều khối case.

Tại sao sử dụng string tolower trong ví dụ đầu tiên? Điều này liên quan đến tính nhất quán, đảm bảo chuỗi định dạng và đầu ra có chữ cái viết thường đồng nhất. Một chi tiết nhỏ, nhưng nó minh họa sự ưa thích của Fish đối với các thao tác chuỗi đơn giản.

Xem Thêm