LoginSignup
1
3

More than 1 year has passed since last update.

様々な言語での日時表記

Last updated at Posted at 2021-10-02

背景

日時表現は割とよく使うけど、言語で書き方統一されてなくて正直やり辛いな~~
似てるけどちょっと違う、が多くてよくミスってしまうな〜〜
と思ったので覚書程度にまとめます。

というわけで、いろんな言語で現在の年月日・時刻を「2021年10月02日 23時00分00秒」の形式で出力します。
とりあえずはJava, Ruby, Python3, Go, php。適宜更新します

Java(8以上)

SE8から加わったDate and Time APIのおかげで実装がぐっと楽になりました。

Main.java
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時間制の時を表しますね…うっかりミスりそう……要注意ですね

1
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
3