師匠の散歩

きままにPerlでも

plus 9 oclock

グリニッジ時刻を日本時刻に変換する/ subTime.cgi

注意事項
西暦1962年から西暦2037までの範囲でのみ使用可能

GPX時刻をGMT時刻に変換

GPS機器のデータ(GPXファイル)の日時はグリニッジ時刻となっているため、日本時間(GMT+9)に変更する必要がある。時間+9の計算は簡単だが、日付はちゃんと計算しないといけないため、参考文献を元にサブルーチンを作成した。

# GPSデータはグリニッジ時刻であるため、GMT+9に変換する
# @_=(2010-12-24,08:45;01)でデータを受け取り、
# @_=(2010-12-23,23:45:01)としてデータを返す
sub gpx2gmt {
  my $date=shift;
  my $time=shift;

  my ($year,$month,$day ) = split(/-/, $date);
  my ($ji  ,$fun  ,$byo ) = split(/:/, $time);

  # 秒数を求める
  my $seconds = timelocal(0, 0, 0, $day, $month - 1, $year - 1900);

  if( ($ji+9) > 23) { 
    $ji = $ji+9-24;
    $seconds += 24*3600;
  } else {
    $ji+=9;
  }
  ($day,$month,$year) = (localtime($seconds))[3..5];
  
  # 整形して戻す
  $date = sprintf('%04d-%02d-%02d',$year + 1900, $month + 1, $day);
  $time = sprintf('%02d:%02d:%02d',$ji         , $fun      , $byo);
  # 配列を戻す
  return ($date,$time);
} 

# 呼び出し側
 my $gpxdate="2010-12-18";
 my $gpxtime="23:45:01";
 my ($gmtdate,$gmttime)=gpx2gmt($gpxdate,$gpxtime);
 print " $gmtdate\n";
 print " $gmttime\n";
計算データ
2010-12-18
23:45:01
計算結果
= 2010-12-19
= 08:45:01

subTime.cgi // Topに戻る // indexに戻る
Copyright(C) 2009-2021 Grandmaster Last up : 2020/09/18