2023年3月4日土曜日

UNIX時間(5)

UNIX時間(4)からの続き

いつの間にか,Python(1991-)がプログラミング言語の主役に躍り出ていた。Jupyterでも使えるので,環境は整っている。一方のPerl(1987-)は,今ではオブジェクト指向のRuby(1995-)に取って代わられたのかもしれない。

最初に,Pythonという言葉を耳にしたのは「インターネットと教育」祭の最終段階のころだったか。誰かが,Zope(1999-)というPythonで書かれたすごいシステムがあって何でもできるような話をしていたころだ。それがどこかでCMSのPlone(2001-)につながるのだが,そのデザインに引かれて,自分でもポータルサイトに使いかけていたことがあった。


#! /Users/koshi/bin/python
#
import datetime
import pytz
import time
#
# 現在のUNIX時間を出力
unix_time = int(time.time())
print(unix_time)
print(datetime.datetime.fromtimestamp(unix_time))
# UNIX時間に変換
ud = datetime.datetime(1973, 9, 20, 6, 0, 0, 0)
tz = pytz.timezone("Asia/Tokyo")
ud = tz.localize(ud)
ut = ud.timestamp()
print(ut)
# 年月日日時分に変換
ud=datetime.datetime.fromtimestamp(ut)
print(ud)
# UNIX基準時
n = 0
print(n)
print(datetime.datetime.fromtimestamp(n))
# 2038年問題
n = 2**31-1
print(n)
print(datetime.datetime.fromtimestamp(n))




#!/usr/bin/perl
#
use strict;
use warnings;
use Time::Local 'timelocal';
use Time::HiRes 'gettimeofday';
my $ut = 0;
my ($msec, $sec, $min, $hour, $day, $month, $year) = shift;

# 現在時刻の取得
($year, $month, $day, $hour, $min, $sec, $msec) = getCurrentTimeStr();
printf("JST: %04d/%02d/%02d %02d:%02d:%02d.%003d\n", $year ,$month, $day, $hour, $min, $sec, $msec);
# UNIX時間への変換
$ut = timelocal($sec, $min, $hour, $day, $month-1, $year);
print($ut,"\n");
# 年月日時分秒への変換
getDateTimeStr($ut);
# UNIX基準時
$ut = 0;
print($ut,"\n");
getDateTimeStr($ut);
# 2038年問題
$ut = 2**31-1;
print($ut,"\n");
getDateTimeStr($ut);
exit 0;

sub getCurrentTimeStr {
    my ($epochSec, $microSec) = gettimeofday();
    my ($sec, $min, $hour, $day, $month, $year) = localtime($epochSec);
    $year += 1900;
    $month++;
    return ($year,$month,$day,$hour,$min,$sec,$microSec)
}

sub getDateTimeStr {
($sec, $min, $hour, $day, $month, $year) = localtime($ut);
$year += 1900; $month += 1;
printf("JST: %04d/%02d/%02d %02d:%02d:%02d\n", $year ,$month, $day, $hour, $min, $sec);
}

0 件のコメント: