2011-09-22 191 views
0

我有以下格式的字符串dd/MMM/YYYY:HH:mm:ss(例如13/Jan/2011:08:23:34)我需要將此字符串轉換爲日期。我怎樣才能做到這一點? 在此先感謝在bash中檢索日期的解析字符串

+0

請參閱http://stackoverflow.com/questions/1253828/bash-string-to-date – user219882

+0

我試過日期-d「13/Jan/2011:08:23:34」但它不起作用。它說無效的日期 – maks

回答

6

嘗試

GNU日期

mydate='13/Jan/2011:08:23:34' 
date +%s -d "${mydate:3:3} ${mydate%%/*} ${mydate:7:4} ${mydate#*:}" 

FreeBSD的日期

mydate='13/Jan/2011:08:23:34' 
date -j -f '%d/%b/%Y:%H:%M:%S' "${mydate}" +%s 

基本上,GNU日期必須重新格式化您的日期到的東西GNU日期能夠理解和分析。我選擇了一種粗略的方法(在現實世界中它需要更可靠)。 FreeBSD在這方面更好,並允許您指定解析器應該查找的日期格式。

1

您必須按照日期字符串對date命令有效。

鑑於d="13/Jan/2011:08:23:34"

  1. epoch=$(IFS="/:"; set -- $d; date -d "$1 $2 $3 $4:$5:$6" +%s)
  2. d2=${d//\// } # replace slashes with spaces
    epoch=$(date -d "${d2/:/ }" +%s)