date: недопустимая дата -d для строки в другом часовой пояс

Это стандартная проблема с буферизацией потока ввода-вывода, как уже указывал rozcietrzewiacz.

Подробную статью по этой проблеме см .:

http://www.pixelbeat.org/programming/stdio_buffering/

Вот небольшой тестовый пример, фильтрующий предупреждения pdflatex (вместо ошибок) для Vim TeX -PDF ftplugin.Я использую команду script в Mac OS X, чтобы сделать вывод pdflatex строчной буферизацией. Точно так же включен режим буферизации строки вывода grep (хотя здесь в этом нет необходимости).

pdflatex -version    # pdfTeX 3.1415926-1.40.11-2.2 (TeX Live 2010); kpathsea version 6.0.0
mkdir -p ~/.vim/ftplugin/tex
curl -L -o tex_pdf.tar.gz 'http://www.vim.org/scripts/download_script.php?src_id=13845'
tar -xzf tex_pdf.tar.gz 
cp ftplugin/tex/tex_pdf.vim ~/.vim/ftplugin/tex

# on Linux use: script -c 'pdflatex...' /dev/null
cat <<-'EOF' | ed -s ~/.vim/ftplugin/tex/tex_pdf.vim
H
,g/setlocal makeprg=pdflatex/s/\(.*\)/"\1/
.a
            setlocal makeprg=script\ \-q\ /dev/null\ pdflatex\ \-file\-line\-error\ \-interaction=nonstopmode\ $*\\\|\ grep\ \-\-line\-buffered\ \-iP\ 'warning'
.
wq
EOF

curl -L -s 'http://www.maths.manchester.ac.uk/~kd/latextut/beamerex.tex' | 
    LC_ALL=C tr -d '\r' > beamerex.tex

vim --cmd "filetype plugin on" -V9myVimLog beamerex.tex
:set shell=/bin/bash
:BuildTexPdf
:clist
:copen
:cn
:ccl
:qa!

less myVimLog

1
04.06.2018, 23:56
2 ответа

Asumiendo la fecha GNU, use el formato de fecha y hora ISO8601 como formato de transporte común:

$ date_local=$(date --iso-8601=seconds)
$ echo "$date_local"
2018-06-04T17:01:45-04:00

$ date_adelaide=$(TZ=Australia/Adelaide date -d "$date_local" --iso-8601=seconds)
$ echo "$date_adelaide"
2018-06-05T06:31:45+09:30

$ day_name_local=$(date -d "$date_adelaide" +%a)
$ echo $day_name_local
Mon

$ day_name_adelaide=$(TZ=Australia/Adelaide date -d "$date_adelaide" +%a)
$ echo $day_name_adelaide
Tue
2
27.01.2020, 23:43

En mi sistema, cuando convertí la fecha a la zona horaria de Australia/Adelaida y luego traté de usar esa fecha convertida en un comando de "fecha" posterior, algo en mi sistema impide la interpretación correcta de ACST en la cadena. Mi solución fue generar porciones formateadas de la fecha a medida que se convertía a la zona horaria deseada. FECHA=$ (fecha )$ echo $FECHA Martes 5 de junio 14 :13 :03 EDT 2018 $ TZ=Fecha de Australia/Adelaida -d "$FECHA" mié 6 de junio 03 :43 :03 ACST 2018 $ dayName=$ (TZ=Australia/Adelaide date -d "$DATE" +%a )$ dayofmonth=$ (TZ=Australia/Adelaida date -d "$DATE" +%d )$ dayofweek=$ (TZ=Australia/Adelaida date -d "$DATE" +%w )$ hora=$ (TZ=Australia/Adelaida fecha -d "$FECHA" +%H )$ minutos=$ (TZ=Australia/Adelaida fecha -d "$FECHA" +%M )echo $nombreDía $díadelmes $díadelasemana $hora $minutos mié 06 3 03 43

0
27.01.2020, 23:43

Теги

Похожие вопросы