2015-12-18 2 views
0

Я пытаюсь написать сценарий bash, который принимает пользовательский ввод определенной даты в формате, таком как MM/DD/YYYY, и возвращает, была ли эта конкретная дата во время летнего времени или нет. Есть ли определенная функция, которая проверяет это? Есть ли способ выполнения команды date? Я использую RHEL 6.4.Обнаружение DST с даты, введенной пользователем в bash

ответ

0

Вы можете получить дату GNU сказать вам часовой пояс языке Генеральный Общие Аббревиатура. Это изменится, если DST действует:

TZ=US/Pacific date --date '2015/05/12' +%Z 

возвратов:

PDT 

И:

TZ=US/Pacific date --date '2015/12/12' +%Z 

возвратов:

PST 

Я не вижу способ получить, действует ли DST явно от date, но в зависимости от того, что вы пытаетесь выполнить, это может решить вашу проблему.

+0

Спасибо за помощь !! Я полностью забыл, что часовой пояс изменился, когда он был в летнее время. Благодарю. – conman1985

+0

* часовой пояс * не меняется. Это по-прежнему 'US/Pacific'. Часовой пояс * смещение * изменяется, как и связанный с ним часовой пояс * аббревиатура *. –

+1

Обновлен ответ, чтобы быть более четким. – Julian

0

Я хотел бы использовать модуль Perl DateTime для этого:

perl -MDateTime -E ' 
    ($y, $m, $d) = split(/-/, shift); 
    $dt = DateTime->new(year=>$y, month=>$m, day=>$d, time_zone=>"local"); 
    say $dt->is_dst; 
' "2015-06-15" 
1 
perl -MDateTime -E ' 
    ($y, $m, $d) = split(/-/, shift); 
    $dt = DateTime->new(year=>$y, month=>$m, day=>$d, time_zone=>"local"); 
    say $dt->is_dst; 
' "2015-01-15" 
0 
+0

Помните, что многие часовые пояса не используют DST, Asia/Tokyo и Canada/Saskatchewan, являющиеся двумя. –

+0

Спасибо за ответ. Я посмотрю на perl для этой проблемы. – conman1985

Смежные вопросы