Trên Linux CLI, có cách nào để lấy số tuần trong tháng không? Có lẽ có một cách khác để có được điều này với một date
lệnh (thích ) đơn giản ? Giả sử ngày 1 đến 7 là tuần đầu tiên, ngày 8 đến 14 là tuần thứ hai, v.v.
Trên Linux CLI, có cách nào để lấy số tuần trong tháng không? Có lẽ có một cách khác để có được điều này với một date
lệnh (thích ) đơn giản ? Giả sử ngày 1 đến 7 là tuần đầu tiên, ngày 8 đến 14 là tuần thứ hai, v.v.
Câu trả lời:
Các date
lệnh không thể làm điều này trong nội bộ, vì vậy bạn cần một số số học bên ngoài.
echo $((($(date +%-d)-1)/7+1))
Chỉnh sửa: Đã thêm dấu trừ giữa% và d
Bạn có thể sử dụng điều này:
Thứ hai ngày đầu tuần
WEEKNUMBER=$(( 1 + $(date +%V) - $(date -d "$(date -d "-$(($(date +%d)-1)) days")" +%V) ))
Ngày chủ nhật tuần lễ Firs
WEEKNUMBER=$(( 1 + $(date +%U) - $(date -d "$(date -d "-$(($(date +%d)-1)) days")" +%U) ))
Nếu bạn chấp nhận các công cụ bên ngoài trong nhiệm vụ của mình, hãy thử dateutils . Nó có khái niệm về ngày xuất hiện trong vòng một tháng, tức là ngày 27 tháng 4 năm 2012 là ngày thứ 6 tháng 4 năm 2012, trùng với định nghĩa trong tuần của bạn. Để có được số đó, hãy sử dụng:
dconv 2012-04-27 -f %c
=>
04
%c
(tính) là công cụ xác định định dạng cho sự xuất hiện - trong tháng. Hoặc để thậm chí mát hơn thử
dconv today -f '%cth %a in %b %Y'
=>
1st Wed in Sep 2012