2023年3月1日水曜日

UNIX時間(4)

UNIX時間(3)からの続き

昔憧れていた(しかも一度も使ったことがない)S言語(1984-)の流れを汲むR言語(1993-)は統計処理を得意としており,ほとんど使わないがなんとなく手放せない。macOSで起動すれば,Rの実行環境あるいはRStudioでの処理となる。コマンドラインではどうなるかというと,homebrewに rscript というインタープリタが導入されていた。

Processing(2001-)はグラフィックスやアニメーションに秀でており,Arduino などのワンボードマイコンの処理系としても登場する。Javaのアプレットとして取り出せないこともないが,基本的にはProcessing実行環境の中が舞台だ。p5.jsというJavascriptライブラリを使うと,このProcessingに相似した言語(まったく同じかと期待したがそうではなかった)でJavascriptを操ることが出来る。これによって,プログラムを実行環境の外へ取り出せたようにも見えるが,実際にはなんだかまだるっこしい。

そこで,代わりにコマンドラインで使える TypeScript(2012-)を使うことにする(Processingはどこへ行ったのだろう)。macOSでのTypeScriptでは,.tsファイルを作成した後,tsc で .jsファイルを生成し,nodeで .jsファイルを実行することが出来る。一方,ts-nodeコマンドを使えば, .ts ファイルをスクリプトとして直ちに実行することも可能だ。

#! /opt/homebrew/bin/rscript

#

library(lubridate)

options(digits.secs=3)

#現在時刻の取得(ms単位)

dt <- now(tzone = "Asia/Tokyo")

dt

dt <- Sys.time()

dt

#UNIX時間へ変換

dt <- as.POSIXlt("1973-09-20 12:34:56.789 JST")

dt

ut <- as.numeric(as.POSIXlt(dt))

ut

#年月日時分秒へ変換

dt <- as_datetime(ut, tz="Asia/Tokyo")

dt

#UNIX基準時(JST)

as.numeric(as.POSIXlt("1970-01-01 09:00:00 JST"))

as_datetime(0, tz="UTC")

#2038年問題(JST)

as.numeric(as.POSIXlt("2038-01-19 12:14:08 JST"))

as_datetime(2**31, tz="UTC")




#! /opt/homebrew/bin/ts-node

//

// 現在時刻を取得する (ミリ秒単位)

var date = new Date()

console.log(date.toISOString())

var time = date.getTime()

console.log(time)

// UNIX時間への変更

var date = new Date(Date.parse('1973-09-20T12:34:56.789Z'))

var time = date.getTime()

console.log(time)

// 年月日日時分への変更

var date = new Date(time);

console.log(date);

// UNIX基準時

var n0 = 0;

console.log(n0);

var t0 = new Date(n0);

console.log(t0)

// 2038年問題

var n8 = 2**31-1;

console.log(n8);

var t8 = new Date(n8*1000);

console.log(t8);

0 件のコメント: