การแปลงเขตเวลาตามบรรทัดคำสั่ง


19

ฉันรู้เกี่ยวกับhttp://www.timeanddate.com/worldclock/converter.html

ฉันไม่สามารถทราบวิธีการสืบค้นhttp://www.google.comในรูปแบบที่เป็นธรรมชาติเช่น "5 BST ใน PST"

หรือฉันต้องเขียนแอพเช่นนี้?


คุณหมายถึงอะไรกันแน่ linux บรรทัดคำสั่ง? คุณสั่งพิมพ์คำว่า Google ได้ไหม? อะไร?!
Dal Hundal

บรรทัดคำสั่งในเปลือกและช่องการค้นหาของ Google เป็นทั้งบรรทัดคำสั่งให้ฉัน
เฮ็นดรี

1
อาจเป็นเครื่องมือที่ดีกว่าที่จะทำเมืองตามรหัสสนามบิน 5 โมงเย็น LHR ใน SFO
hendry

@hendry dateutils สามารถทำการแปลงเขตเวลาตามรหัสสนามบิน iata และ icao: dateconv 2017-05-16T17:00 --from-zone iata:SFO --zone iata:LHR->2017-05-17T01:00:00
hroptatyr

คำตอบ:


36

เวลา 18.00 น. ในไทเปเวลาเท่าไหร่ที่นี่?

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

เวลา 11.00 น. ที่นี่ในลอนดอนเวลาเท่าไหร่ในไทเป

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

แปลก แต่วิธีแรกไม่ได้ผลสำหรับฉัน: TZ=Europe/Moscow date --date='TZ="Asia/Taipei" 18:00' Mon Mar 27 18:00:00 CST 2017- นั่นเป็นเพียงแค่บอกวันที่ในไทเปไม่ใช่วันที่ท้องถิ่นของฉันในช่วงเวลานั้น แม้ว่า manpage บอกว่าวิธีการของคุณถูกต้อง ฉันทำอะไรบางอย่างหายไปหรือเปล่า .. coreutils 8.26, Arch Linux
MarSoft

หากต้องการค้นหาตัวระบุเขตเวลาให้ใช้ somethin เช่น: timedatectl list-timezones|grep -i taipei(prints Asia/Taipei), timedatectl list-timezones|grep -i berlin(prints Europe/Berlin), timedatectl list-timezones|grep -i angeles(prints America/Los_Angeles)
exebook

6

ตัวอย่างนี้มาจากhttp://www.pixelbeat.org/cmdline.html#dates

มันให้เวลาท้องถิ่นที่สอดคล้องกับ 09:00 บนชายฝั่งตะวันตกของสหรัฐอเมริกาบัญชีสำหรับการเปลี่ยนการประหยัดไฟวันที่แตกต่างกัน

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

ใช้ tzselect เพื่อรับ TZ รูปแบบ PST ไม่ชัดเจน IST = เวลามาตรฐานของอินเดียและเวลาฤดูร้อนของไอริช


3
ไม่ทราบtzselectขอบคุณ หากคุณป้อนข้อมูลผิด 'TZ' คุณสามารถรับผลลัพธ์ที่ทำให้เข้าใจผิดเช่น TZ = วันที่ลอนดอนวันศุกร์ 16 ก.ค. 10:28:52 ลอนดอน 2010
hendry

6

ฉันคิดว่าสิ่งนี้ใกล้เคียงกับสิ่งที่ OP ถาม (เนื่องจากเขาไม่จำเป็นต้องรู้ว่า BST คือไทเปและคำตอบไม่ได้อธิบายวิธีการไปยัง "เอเชีย / ไทเป" จาก 'BST')

วันแรกปัจจุบันของฉัน:

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

แล้ววันที่ฉันอยากรู้:

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

ดังนั้นฉันรู้ว่า5pm BSTอยู่ห่างออกไป 2 ชั่วโมง

ฉันมักจะลืมว่าฉันต้องเพิ่มหรือลบสองชั่วโมงจากเวลา EDT ดังนั้นฉันมีสคริปต์เล็กน้อยกับเขตเวลาทั่วไปที่ฉันต้องทำงานกับ:

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

และผลลัพธ์:

$ 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

สถานที่ที่ถูกต้องสำหรับคุณสคริปต์สามารถพบได้ที่นี่tz/usr/share/zoneinfo

date -d '<time> <timezone>'แต่อีกครั้งสำหรับครั้งในอนาคตผมเพียงแค่ใช้


2

ใช้Wolfram Alpha ไปที่ URL พื้นฐาน ...

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

+ผนวกแปลงที่มีช่องว่างแทนที่ด้วย ตัวอย่างเช่น:

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

โปรดทราบว่า Wolfram Alpha ดูเหมือนจะไม่รู้จักBSTเป็นเขตเวลา


หนึ่งจะค้นหารหัสโซนเวลาได้อย่างรวดเร็วได้อย่างไร
hendry

@hendry นี่คือแผนที่ออนไลน์แบบอินเทอร์แอคทีฟที่ยอดเยี่ยม: timeanddate.com/time/map/#!cities=241
DavidG

1

ฉันรู้ว่ามันเป็นเธรดเก่า แต่ฉันต้องการรหัสสำหรับกรณีการใช้งานเดียวกันและตามแนวคิดที่นี่พัฒนาสคริปต์ทุบตีเล็ก ๆ น้อย ๆ นี้:

#!/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

คุณสามารถใช้เพื่อตรวจสอบความแตกต่างของเวลาวันนี้หรือในวันที่ในอนาคต:

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


สคริปต์ที่ยอดเยี่ยม! เพิ่มไปยังชุดเครื่องมือของฉันแล้วขอบคุณ! คุณคิดว่าเป็นไปได้หรือไม่ที่จะแสดงเวลาเป็นคอลัมน์แทนที่จะเป็นแถว?
cesarpachon

อาจจะ. ฉันไม่เห็นประโยชน์สำหรับสิ่งนั้น
Iuri Gavronski
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.