ตัวอย่างเช่นฉันต้องการแสดงวันที่และเวลาปัจจุบันเป็นรูปแบบต่อไปนี้:
yyyymmddhhmmss
ฉันจะทำอย่างไร? ดูเหมือนว่ารูปแบบวันที่ส่วนใหญ่มาพร้อมกับ-
, /
, :
ฯลฯ
ตัวอย่างเช่นฉันต้องการแสดงวันที่และเวลาปัจจุบันเป็นรูปแบบต่อไปนี้:
yyyymmddhhmmss
ฉันจะทำอย่างไร? ดูเหมือนว่ารูปแบบวันที่ส่วนใหญ่มาพร้อมกับ-
, /
, :
ฯลฯ
คำตอบ:
ได้แล้ว:
date +%Y%m%d%H%M%S
ตามที่man date
กล่าวไว้ใกล้ด้านบนคุณสามารถใช้date
คำสั่งดังนี้:
date [OPTION]... [+FORMAT]
นั่นคือคุณสามารถกำหนดพารามิเตอร์รูปแบบโดยเริ่มต้นด้วยไฟล์+
. คุณอาจเดาความหมายของสัญลักษณ์การจัดรูปแบบที่ฉันใช้:
%Y
สำหรับปี%m
เป็นเดือน%d
สำหรับวันคุณจะพบสิ่งนี้และสัญลักษณ์การจัดรูปแบบอื่น ๆ ในman date
.
ตัวอย่างง่ายๆในเชลล์สคริปต์
#!/bin/bash
current_date_time="`date +%Y%m%d%H%M%S`";
echo $current_date_time;
ด้วยรูปแบบเครื่องหมายวรรคตอน: - +% Y% m% d% H% M% S
ด้วยเครื่องหมายวรรคตอน: - +% Y-% m-% d% H:% M:% S
หากคุณใช้ Bash คุณสามารถใช้หนึ่งในคำสั่งต่อไปนี้:
printf '%(%Y%m%d%H%M%S)T' # prints the current time
printf '%(%Y%m%d%H%M%S)T' -1 # same as above
printf '%(%Y%m%d%H%M%S)T' -2 # prints the time the shell was invoked
คุณสามารถใช้ตัวเลือก-v varname
เพื่อจัดเก็บผลลัพธ์$varname
แทนการพิมพ์เป็น stdout:
printf -v varname '%(%Y%m%d%H%M%S)T'
แม้ว่าคำสั่ง date จะถูกเรียกใช้งานใน subshell เสมอ (เช่นในกระบวนการแยกต่างหาก) printf เป็นคำสั่งในตัวดังนั้นจึงเร็วกว่า
%
ตัวเลือกที่คุณสามารถส่งผ่านได้ดูเหมือนว่าจะใช้date
คำสั่ง ดังนั้นman date
จะให้คุณมีตัวเลือก
ไม่มีเครื่องหมายวรรคตอน (ตามที่ @Burusothman ได้กล่าวไว้):
current_date_time="`date +%Y%m%d%H%M%S`";
echo $current_date_time;
O / P:
20170115072120
ด้วยเครื่องหมายวรรคตอน :
current_date_time="`date "+%Y-%m-%d %H:%M:%S"`";
echo $current_date_time;
O / P:
2017-01-15 07:25:33
วิธีที่น่าสนใจ / ตลกโดยใช้การขยายพารามิเตอร์ (ต้องใช้bash 4.4
หรือใหม่กว่า):
${parameter@operator} - P operator
การขยายเป็นสตริงที่เป็นผลมาจากการขยายค่าของพารามิเตอร์ราวกับว่าเป็นสตริงพร้อมต์
$ show_time() { local format='\D{%Y%m%d%H%M%S}'; echo "${format@P}"; }
$ show_time
20180724003251
"`date +%Y-%m-%d %H:%M:%S`"
ให้ฉันdate: illegal time format