#背景
日時表現は割とよく使うけど、言語で書き方統一されてなくて正直やり辛いな~~
似てるけどちょっと違う、が多くてよくミスってしまうな〜〜
と思ったので覚書程度にまとめます。
というわけで、いろんな言語で現在の年月日・時刻を「2021年10月02日 23時00分00秒」の形式で出力します。
とりあえずはJava, Ruby, Python3, Go, php。適宜更新します
#Java(8以上)
SE8から加わったDate and Time APIのおかげで実装がぐっと楽になりました。
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
public class Main {
public static void main(String[] args) {
// SE8から加わったクラス。現在の日時を取得
LocalDateTime dateTime = LocalDateTime.now();
// 独自のフォーマットを準備する
DateTimeFormatter fmt = DateTimeFormatter.ofPattern("yyyy年MM月dd日 HH時mm分ss秒");
// 現在の日時に対するフォーマットの適用
String showDate = fmt.format(dateTime);
System.out.println(showDate);
}
}
#Ruby
require "date"
# 現在日時の取得
t = Time.now
# フォーマットを適用して出力
p t.strftime("%Y年%m月%d日 %H時%M分%S秒")
%Y
だと西暦4桁、%y
だと西暦の下2桁になります
また%H
は24時間制の時を指しますが、%I
にすると12時間制の時を表します
#Python3
import datetime
# 現在日時の取得
datetime_now = datetime.datetime.now()
print(datetime_now.strftime('%Y年%m月%d日 %H時%M分%S秒'))
現在時刻を取得するのにdatetimeモジュールのdatetime.now()を使うのでdatetimeが続いてしまいます。
import ... as ...
で別名をつけたい気持ちになります。
フォーマットはRubyととても似ていて、%Y
だと西暦4桁、%y
だと西暦の下2桁になります。
要注意なのは%H
は24時間制の時を指しますが、12時間制の時の指定には%h
を使います。
#Go
Goで日付を初めて実装したとき、文化の違いをひしひしと感じました。
package main
import "fmt"
import "time"
func main(){
// 現在の日時を取得
t := time.Now()
// 独自のフォーマットを準備する
const DateFormat = "2006年01月02日 15時04分05秒"
// 現在の日時に対するフォーマットの適用
showDate := t.Format(DateFormat)
fmt.Println(showDate)
}
フォーマットのクセが強すぎる
なぜこんなフォーマットなのかはこの記事がわかりやすいので一読しておくと良いです
#php
<?php
// フォーマットを指定して現在日時の取得
$today = date("Y年m月d日 H時i分s秒");
print_r($today);
?>
Pythonと似てる…というよりも、きっとPythonがPHPに寄せたんでしょう。
例によってY
だと西暦4桁、y
だと西暦の下2桁になります。
一方で分を表すのにはi
を使います。
そういえばRubyでは大文字のIで12時間制の時を表しますね…うっかりミスりそう……要注意ですね