Komut satırı ile saat dilimi dönüşümü


20

Http://www.timeanddate.com/worldclock/converter.html hakkında biliyorum

Http: //www.google.com'u "PST'de 17:00 BST" gibi aklı başında bir doğal biçimde nasıl sorgulayacağımı anlayamıyorum.

Yoksa böyle bir uygulama yazmak zorunda mıyım?


Tam olarak ne demek istiyorsun? Komut satırı linux? Google'a yazabileceğiniz komut? Ne?!
Dal Hundal

kabuk ve google'ın sorgu kutusunda komut satırı bana bir komut satırı
hendry

1
belki de daha iyi bir araç şehir kodları, SFO
5:00

@hendry dateutils iata ve icao havaalanı kodlarına göre saat dilimi dönüşümü yapabilir: dateconv 2017-05-16T17:00 --from-zone iata:SFO --zone iata:LHR->2017-05-17T01:00:00
hroptatyr

Yanıtlar:


38

Taipei'de saat 18.00, burada saat kaç?

date --date='TZ="Asia/Taipei" 18:00'
Fri Jul 16 11:00:00 BST 2010

Londra'da saat 11.00'de Taipei'de saat kaç?

TZ=Asia/Taipei date -d "11:00 BST"
Fri Jul 16 18:00:00 CST 2010

Garip, ama ilk yol benim için çalışmıyor: TZ=Europe/Moscow date --date='TZ="Asia/Taipei" 18:00' Mon Mar 27 18:00:00 CST 2017- yani bana Taipei'deki tarihi anlatıyor, o zaman için yerel tarihimi değil. Manpage yönteminizin doğru olduğunu söylemesine rağmen. Bir şey mi kaçırıyorum? .. coreutils 8.26, Arch Linux
MarSoft

Bir saat dilimi tanımlayıcısı bulmak için aşağıdakileri kullanın: timedatectl list-timezones|grep -i taipei(baskılar Asia/Taipei), timedatectl list-timezones|grep -i berlin(baskılar Europe/Berlin), timedatectl list-timezones|grep -i angeles(baskılar America/Los_Angeles)
19:45

6

Bu örnek http://www.pixelbeat.org/cmdline.html#dates adresinden alınmıştır.

ABD'nin batı kıyısında sabah 9'a karşılık gelen yerel saati verir ve farklı gün ışığı tasarruf geçişlerini açıklar.

date --date='TZ="America/Los_Angeles" 09:00 next Fri'

TZ'yi almak için tzselect kullanın. PST formatı belirsiz. IST = Örneğin Hint Standart Saati ve İrlanda Yaz Saati.


3
Bilmiyordum tzselect, teşekkürler. Yanlış 'TZ' girdisi girerseniz yanıltıcı sonuçlar alabilirsiniz, örn. TZ = Londra tarihi Cum 16 Temmuz 28:28:52 Londra 2010
hendry

6

Bence OP'nin sorduğu soruya daha yakın (BST'nin Taipei olduğunu bilmediği için mi? Ve cevap 'BST'den' Asia / Taipei'ye nasıl ulaşılacağını açıklamıyor).

İlk olarak şu anki tarihim:

$ date
Mon Apr 21 13:07:21 MDT 2014

Sonra bilmek istediğim tarih:

$ date -d '5pm BST'
Mon Apr 21 15:00:00 MDT 2014

Yani 5pm BST2 saat uzakta olduğunu biliyorum .

Genelde EDT zamanlarından iki saat eklemek veya kaldırmak zorunda olduğumu unutuyorum, bu yüzden çalışmak zorunda olduğum ortak zaman dilimlerine sahip küçük bir senaryom var:

$ cat tz
#!/bin/bash
TZ='America/Edmonton' date
TZ='America/Chicago' date
TZ='America/New_York' date

Ve çıktı:

$ tz
Mon Apr 21 13:12:32 MDT 2014
Mon Apr 21 14:12:32 CDT 2014
Mon Apr 21 15:12:32 EDT 2014

tzKomut dosyanız için geçerli konumları burada bulabilirsiniz /usr/share/zoneinfo.

Ama yine, gelecekte zamanlar için kullanıyorum date -d '<time> <timezone>'.


2

Wolfram Alpha kullanın . Temel URL'ye…

http://www.wolframalpha.com/input/?i=

yerine boşluklar ekleyerek dönüşüme ekleyin +. Örneğin:

http://www.wolframalpha.com/input/?i=5+PM+CET+to+PST

Wolfram Alpha'nın BSTsaat dilimi olarak algılanmadığını unutmayın .


saat dilimi kodlarını nasıl hızlı bir şekilde arar?
hendry

@hendry Bu harika bir interaktif çevrimiçi harita: timeanddate.com/time/map/#!cities=241
DavidG

1

Eski bir iş parçacığı olduğunu biliyorum, ama aynı kullanım durumu için bir kod gerekiyordu ve burada fikirlere dayanarak, bu küçük bash betiği geliştirdi:

#!/bin/bash
# ig20180122 - displays meeting options in other time zones
# set the following variable to the start and end of your working day
myday="8 20" # start and end time, with one space
# set the local TZ
myplace='America/Sao_Paulo'
# set the most common places
place[1]='America/Toronto'
place[2]='America/Chicago' # Houston as well
place[3]='Europe/Amsterdam'
place[4]='Europe/Dublin'
# add cities using place[5], etc.
# set the date format for search
dfmt="%m-%d" # date format for meeting date
hfmt="+%B %e, %Y" # date format for the header
# no need to change onwards
format1="%-10s " # Increase if your cities are large
format2="%02d "
mdate=$1
if [[ "$1" == "" ]]; then mdate=`date "+$dfmt"`; fi
date -j -f "$dfmt" "$hfmt" "$mdate"
here=`TZ=$myplace date -j -f "$dfmt" +%z  "$mdate"`
here=$((`printf "%g" $here` / 100))
printf "$format1" "Here" 
printf "$format2" `seq $myday` 
printf "\n"
for i in `seq 1 "${#place[*]}"`
do
    there=`TZ=${place[$i]} date -j -f "$dfmt" +%z  "$mdate"`
    there=$((`printf "%g" $there` / 100))
    city[$i]=${place[$i]/*\//}
    tdiff[$i]=$(($there - $here))
    printf "$format1" ${city[$i]}
    for j in `seq $myday`
    do
        printf "$format2" $(($j+${tdiff[$i]}))
    done
    printf "(%+d)\n" ${tdiff[$i]}
done

Saat farklarını bugün veya gelecekteki bir tarihte kontrol etmek için kullanabilirsiniz:

16:08 $ meet
January 22, 2019
Here       08 09 10 11 12 13 14 15 16 17 18 19 20 
Toronto    05 06 07 08 09 10 11 12 13 14 15 16 17 (-3)
Chicago    04 05 06 07 08 09 10 11 12 13 14 15 16 (-4)
Amsterdam  11 12 13 14 15 16 17 18 19 20 21 22 23 (+3)
Dublin     10 11 12 13 14 15 16 17 18 19 20 21 22 (+2)
16:13 $ meet 05-24
May 24, 2019
Here       08 09 10 11 12 13 14 15 16 17 18 19 20 
Toronto    07 08 09 10 11 12 13 14 15 16 17 18 19 (-1)
Chicago    06 07 08 09 10 11 12 13 14 15 16 17 18 (-2)
Amsterdam  13 14 15 16 17 18 19 20 21 22 23 24 25 (+5)
Dublin     12 13 14 15 16 17 18 19 20 21 22 23 24 (+4)
16:13 $ 

HTH


harika bir senaryo! araç setime zaten eklendi, teşekkürler! satırlar yerine sütunlarda zaman oluşturmanın mümkün olduğunu düşünüyor musunuz?
cesarpachon

Olabilir. Ancak bunun için bir fayda görmüyorum.
Iuri Gavronski
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.