【问题标题】:convert time zone and minus x amount of time转换时区并减去 x 时间量
【发布时间】:2015-01-17 05:26:27
【问题描述】:

我一直试图让以下工作,但我似乎总是遇到某种错误..

  1. 从用户输入中获取时间
  2. 使用上述时间作为变量
  3. 将上述时间转换为 JST
  4. 从时间中删除 $duration(分钟)以提供新的时间。

应该是下面的代码行。

#!/bin/sh

read -p "Please enter hour: " hour
read -p "Please enter minute: " minute
read -p "Please enter duration: " duration

jptime=$(TZ=JST date --date $hour$minute)

newtime=$(date -d "$jptime" "-$duration minutes")

echo "$newtime"

【问题讨论】:

  • 这可能不能完全解决你的问题,但是$hour$minute不应该用冒号隔开吗? ---> $hour : $minute
  • 可以,虽然没有它似乎可以正常工作,例如:1154 或 0532

标签: linux bash shell time


【解决方案1】:

我会使用具有良好日期时间库的语言。比如perl

perl -MDateTime -E '
  ($hour, $minute, $duration) = @ARGV; 
  $fmt = "%F %T %Z";
  $local = DateTime->now(time_zone=>"local")->set(hour=>$hour, minute=>$minute, second=>0);
  say $local->strftime($fmt);
  $jp = $local->clone->set_time_zone("Asia/Tokyo"); 
  say $jp->strftime($fmt); 
  $jp2 = $jp->subtract(minutes => $duration); 
  say $jp2->strftime($fmt);
' 8 0 45
2015-01-17 08:00:00 EST
2015-01-17 22:00:00 JST
2015-01-17 21:15:00 JST

或Tcl

hour=8
minute=0
duration=45
export hour minute duration
tclsh <<'END'
  set fmt "%Y-%m-%d %T %Z"
  set t [clock scan "$env(hour):$env(minute) today"]
  puts [clock format $t -format $fmt]
  puts [clock format $t -format $fmt -timezone "Asia/Tokyo"]
  puts [clock format [clock add $t -$env(duration) minutes] -format $fmt -timezone "Asia/Tokyo"]
END
2015-01-17 08:00:00 EST
2015-01-17 22:00:00 JST
2015-01-17 21:15:00 JST

根据您的评论:

 perl -MDateTime -E '
    ($hour, $minute, $duration) = @ARGV;
    say uc DateTime->now(time_zone=>"local")
                   ->set(hour=>$hour, minute=>$minute, second=>0)
                   ->set_time_zone("Asia/Tokyo")
                   ->subtract(minutes => $duration)
                   ->strftime("%a %H:%M");
' 8 0 45 >| output.file

【讨论】:

  • 谢谢,我认为 perl 脚本可以提供帮助,有没有办法让它将新时间回显到文件中?
  • 你到底需要什么输出?
  • 例如。周日 08:51 - dd hh:mm
猜你喜欢
  • 2012-09-27
  • 1970-01-01
  • 2020-12-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-10-17
相关资源
最近更新 更多