ตัวอย่างเช่นฉันต้องการแสดงวันที่และเวลาปัจจุบันเป็นรูปแบบต่อไปนี้:
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