awk: mktime возвращает -1 - PullRequest
       25

awk: mktime возвращает -1

2 голосов
/ 19 марта 2012

Может кто-нибудь помочь мне понять, почему я получаю «-1», возвращаемое mktime в следующем коде.Спасибо.

#!/usr/local/bin/bash
f_name="crap.stat"
S_Date="2012-02-10"
E_Date="2012-02-13"

gawk -F '\t' -v s_date="$S_Date" -v e_date="$E_Date" 'BEGIN {s_time = mktime(s_date);e_time = mktime(e_date);print s_time, e_time}' $f_name

1 Ответ

4 голосов
/ 19 марта 2012

Вы должны использовать определенный формат для этой функции.Здесь ваш код исправлен:

#!/usr/local/bin/bash
f_name="crap.stat"
S_Date="2012-02-10"
E_Date="2012-02-13"

gawk -F '\t' -v s_date="$S_Date" -v e_date="$E_Date" '
  BEGIN { 
    gsub( /-/, " ", s_date ); 
    s_date = s_date " " 00 " " 00 " " 00; 
    s_time = mktime(s_date);
    gsub( /-/, " ", e_date ); 
    e_date = e_date " " 00 " " 00 " " 00;
    e_time = mktime(e_date);
    print s_time, e_time
  }
' $f_name

Результат:

1328828400 1329087600

Должен быть следующий формат: YYYY MM DD HH MM SS[ DST], поэтому я заменяю - пробелами и добавляю нули для времени.

...