แสดงวันที่และเวลาปัจจุบันโดยไม่มีเครื่องหมายวรรคตอน


118

ตัวอย่างเช่นฉันต้องการแสดงวันที่และเวลาปัจจุบันเป็นรูปแบบต่อไปนี้:

yyyymmddhhmmss 

ฉันจะทำอย่างไร? ดูเหมือนว่ารูปแบบวันที่ส่วนใหญ่มาพร้อมกับ-, /, :ฯลฯ

คำตอบ:


170

ได้แล้ว:

date +%Y%m%d%H%M%S

ตามที่man dateกล่าวไว้ใกล้ด้านบนคุณสามารถใช้dateคำสั่งดังนี้:

date [OPTION]... [+FORMAT]

นั่นคือคุณสามารถกำหนดพารามิเตอร์รูปแบบโดยเริ่มต้นด้วยไฟล์+. คุณอาจเดาความหมายของสัญลักษณ์การจัดรูปแบบที่ฉันใช้:

  • %Y สำหรับปี
  • %m เป็นเดือน
  • %d สำหรับวัน
  • ... และอื่น ๆ

คุณจะพบสิ่งนี้และสัญลักษณ์การจัดรูปแบบอื่น ๆ ในman date.


36

ตัวอย่างง่ายๆในเชลล์สคริปต์

#!/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


2
"`date +%Y-%m-%d %H:%M:%S`"ให้ฉันdate: illegal time format
Sinux

6

หากคุณใช้ 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จะให้คุณมีตัวเลือก
electrovir

4

ไม่มีเครื่องหมายวรรคตอน (ตามที่ @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

0

วิธีที่น่าสนใจ / ตลกโดยใช้การขยายพารามิเตอร์ (ต้องใช้bash 4.4หรือใหม่กว่า):

${parameter@operator} - P operator

การขยายเป็นสตริงที่เป็นผลมาจากการขยายค่าของพารามิเตอร์ราวกับว่าเป็นสตริงพร้อมต์

$ show_time() { local format='\D{%Y%m%d%H%M%S}'; echo "${format@P}"; }
$ show_time
20180724003251
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.