Hiển thị ngày và giờ hiện tại mà không có dấu chấm câu


118

Ví dụ: tôi muốn hiển thị ngày và giờ hiện tại ở định dạng sau:

yyyymmddhhmmss 

Làm thế nào để làm điều đó? Nó có vẻ như hầu hết các định dạng ngày tháng đi kèm với -, /, :vv

Câu trả lời:


170

Của bạn đây:

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

Như đã man datenói ở gần trên cùng, bạn có thể sử dụng datelệnh như sau:

date [OPTION]... [+FORMAT]

Đó là, bạn có thể cung cấp cho nó một tham số định dạng, bắt đầu bằng a +. Bạn có thể đoán ý nghĩa của các ký hiệu định dạng tôi đã sử dụng:

  • %Y là trong năm
  • %m là trong tháng
  • %d là trong ngày
  • ... và như thế

Bạn có thể tìm thấy biểu tượng này và các ký hiệu định dạng khác trong man date.


36

Một ví dụ đơn giản trong shell script

#!/bin/bash

current_date_time="`date +%Y%m%d%H%M%S`";
echo $current_date_time;

Với định dạng dấu chấm câu: - +% Y% m% d% H% M% S
Với dấu câu: - +% Y-% m-% d% H:% M:% S


2
"`date +%Y-%m-%d %H:%M:%S`"cho tôi mộtdate: illegal time format
Sinux

6

Nếu đang sử dụng Bash, bạn cũng có thể sử dụng một trong các lệnh sau:

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

Bạn có thể sử dụng Tùy chọn -v varnameđể lưu trữ kết quả $varnamethay vì in nó ra stdout:

printf -v varname '%(%Y%m%d%H%M%S)T'

Trong khi lệnh ngày sẽ luôn được thực thi trong một vỏ con (tức là trong một quy trình riêng biệt) printf là một lệnh nội trang và do đó sẽ nhanh hơn.


Đối với bất kỳ ai đang tìm kiếm thêm tài liệu về những %tùy chọn bạn có thể chuyển vào, điều này dường như đang sử dụng datelệnh. Vì vậy, man datesẽ cung cấp cho bạn các tùy chọn có sẵn.
electrovir

4

Không có dấu chấm câu (như @Burusothman đã đề cập):

current_date_time="`date +%Y%m%d%H%M%S`";
echo $current_date_time;

O / P:

20170115072120

Với dấu câu :

current_date_time="`date "+%Y-%m-%d %H:%M:%S"`";
echo $current_date_time;

O / P:

2017-01-15 07:25:33

0

Cách thú vị / hài hước để làm điều này bằng cách sử dụng mở rộng tham số (yêu cầu bash 4.4hoặc mới hơn):

${parameter@operator} - P operator

Việc mở rộng là một chuỗi là kết quả của việc mở rộng giá trị của tham số như thể nó là một chuỗi dấu nhắc.

$ show_time() { local format='\D{%Y%m%d%H%M%S}'; echo "${format@P}"; }
$ show_time
20180724003251
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.