通过命令行进行时区转换


19

我知道http://www.timeanddate.com/worldclock/converter.html

我不知道如何以理智的自然格式查询“ http://www.google.com”,例如“ PST中的BST下午5点”。

还是我必须编写这样的应用程序?


你到底是什么意思 命令行Linux?命令您可以输入Google吗?什么?!
Dal Hundal

Shell中的命令行和Google的查询框都是我的命令行
hendry

1
在SFO中,LHR下午5点通过机场代码对城市进行处理可能是一个更好的工具
hendry

@hendry dateutils可以根据iata和icao机场代码进行时区转换:dateconv 2017-05-16T17:00 --from-zone iata:SFO --zone iata:LHR->2017-05-17T01:00:00
hroptatyr

Answers:


36

台北时间下午6点,现在几点?

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

伦敦现在上午11点在台北几点钟了?

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-即它只是告诉我台北的日期,而不是该时间点的本地日期。尽管手册页说您的方法是正确的。我错过了什么吗?.. coreutils 8.26,Arch Linux
MarSoft

要查找时区标识符,请使用诸如:(timedatectl list-timezones|grep -i taipei打印Asia/Taipei),timedatectl list-timezones|grep -i berlin(打印Europe/Berlin),timedatectl list-timezones|grep -i angeles(打印America/Los_Angeles
exebook,

6

此示例来自http://www.pixelbeat.org/cmdline.html#dates

它给出了与美国西海岸的上午9点相对应的当地时间,这说明了不同的日光节约时间转换。

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

使用tzselect获取TZ。PST格式不明确。例如,IST =印度标准时间和爱尔兰夏季时间。


3
不知道tzselect,谢谢。如果您输入了错误的“ TZ”输入,则可能会产生误导性的结果,例如TZ =伦敦日期Fri Jul 16 10:28:52 London 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。到基本网址…

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

1

我知道这是一个旧线程,但是我需要用于同一用例的代码,并根据此处的思想开发了这个小bash脚本:

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

高温超导


很棒的脚本!已经添加到我的工具集中,谢谢!您认为有可能用列而不是行来渲染时间吗?
塞萨尔帕洪

也许。我看不出有什么用。
Iuri Gavronski '19年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.