shell
  • epoch
  • 2016-03-25 25 views 0 likes 
    0

    '2015_11_01_00_00' dizesi var. Aşağıdaki kodu denedim, ancak değeri bulunamadı.Tarih dizesini çağa dönüştürme

    #!/bin/bash 
    
    echo "mohit" 
    
    date_var="2015_11_01_00_00" 
    
    echo $date_var 
    
    arr=$(echo $date_var | tr "_" "\n") 
    
    IFS='_ ' read -r -a arr <<< "$date_var" 
    #echo $arr 
    echo ${arr[0]} 
    echo ${arr[1]} 
    echo ${arr[2]} 
    echo ${arr[3]} 
    echo ${arr[4]} 
    
    updated_date="${arr[0]}"-"${arr[1]}"-"${arr[2]}"-"${arr[3]}"-"${arr[4]}" 
    echo $updated_date 
    
    TMRW_DATE=`date --date="$updated_date" +"%s"` 
    echo "$TMRW_DATE" 
    
    +0

    Yardım ettiniz mi? ayrılan zaman dilimleri, belirsizlik ve bilgi kaybı? Sizin durumunuzda önemli olmayabilir, ancak '1459154813' dönemi yalnızca bir şeyi ifade edebilirken, 2015_11_01_00_00 'bir saat dilimi olmadan belirsizdir. – jDo

    cevap

    1

    Bu seferki hile yapmak gerekir: Burada

    #!/bin/bash 
    
    echo "mohit" 
    
    date_var="2015_11_01_00_00" 
    
    updated_date=`echo ${date_var} | sed -e 's,_,/,;s,_,/,;s,_, ,;s/_/:/'` 
    echo ${updated_date} 
    
    TMRW_DATE=`date -d "$updated_date" +"%s"` 
    echo "$TMRW_DATE" 
    
    +0

    Ben alıyorum mohit mohit date: yasadışı seçeneği - - kullanımı: date [-jnu] [-d dst] [-r saniye] [-t batı] [-v [+ | -] val [ymwdHMS] ] ... [-f fmt tarih | [[[mm] dd] HH] MM [[cc] yy] [.ss]] [+ biçim] Çevreye özgü bir sorun olabilir –

    +0

    Makinemde, her iki cevabı da doğru şekilde uygulayabilirim. Yine de, diğer cevap doğru sonucu elde etmek için '$ 4- $ 5'' '$ 4: $ '' olarak değiştirilmelidir. Tarih programınızın '--date 'seçeneğini kabul etmediği görülüyor. Bunun yerine '-d' kullanmayı deneyin. (Cevap güncellendi). –

    +0

    @Ribin Hue yardımın için teşekkürler, benim için çalıştı, hatta kodum da çalıştı. Çevre meselesiydi, farklı örnek üzerinde çalıştı. –

    1

    GNU date syntax kullanarak, bunu yapmak için tek yoldur:

    #!/bin/bash 
    echo "mohit" 
    date_var="2015_11_01_00_00" 
    
    TMRW_DATE=$(
        set -- $(echo $date_var | tr "_" " ") 
        date --date="$1-$2-$3 $4:$5" +"%s" 
    ) 
    
    echo "$TMRW_DATE" 
    

    ve bu OS X date implementation ile çalışmalıdır:

    #!/bin/bash 
    echo "mohit" 
    
    date_var="2015_11_01_00_00" 
    TMRW_DATE=$(date -j -f "%Y_%m_%d_%H_%M" "$date_var" +%s) 
    
    echo "$TMRW_DATE" 
    
    +0

    Lütfen dikkat: 'date --date =" $ 1- $ 2- $ 3 $ 4- $ 5 "+"% s ",' date --date = "$ 1- $ 2- $ 3 $ 4: $ 5" + "% s" 'den farklı 'Saat dilimi + 0: 00'da olmadıkça. Daha sonra doğru cevap olmalıdır. + "% S" 'yi atladığınızda farkı görebilirsiniz. –

    +0

    @jlliagre Kodunuzu çalıştırdım, mohit mohit tarih: yasadışı seçenek - - kullanıyorum: date [-jnu] [-d dst] [-r saniye] [-t batı] [-v [+ | -] val [ymwdHMS]] ... [-f fmt tarih | [[[mm] dd] HH] MM [[cc] yy] [.ss]] [+ biçim] Bazı ortamlara özgü hatalar mı var, Mac makinesinde çalışıyorum. –

    +0

    Yanıt güncellendi. – jlliagre

    İlgili konular