LoginSignup
6
9

More than 5 years have passed since last update.

現在時刻の取得方法まとめ

Last updated at Posted at 2018-10-20

現在時刻の取得方法まとめ

どんな言語で実装しても現在時刻(ミリ秒まで)を取得したいときがしばしばあるので、
yyyy/MM/dd HH:mm:ss.SSSで標準出力する例をまとめておく。

shell

dateコマンドを使う。たぶん一番簡単。

date '+%Y/%m/%d %H:%M:%S.%3N'

C#

System.DateTime.Nowを使うと簡単。

string now = System.DateTime.Now.ToString("yyyy/MM/dd HH:mm:ss.fff");
System.Console.WriteLine(now);

Java

java.util.Calendarを使う方法もあるけど、java.text.SimpleDateFormatを使うと簡単。

String now = new java.text.SimpleDateFormat("yyyy/MM/dd HH:mm:ss.SSS").format(new java.util.Date());
System.out.println(now);

Python

datetimeを使う。strftimeがあるので整形も簡単。

from datetime import datetime
now = datetime.now().strftime("%Y/%m/%d %H:%M:%S.%f")
print(now)

JavaScript

Dateオブジェクトを生成するだけなのに、いつも整形がめんどくさい。

var now = new Date();
var now_str = now.getFullYear() + "/" + ("0"+(now.getMonth()+1)).slice(-2) + "/" + ("0"+now.getDate()).slice(-2) + " "+ ("0"+now.getHours()).slice(-2) + ":" + ("0"+now.getMinutes()).slice(-2) + ":" + ("0"+now.getSeconds()).slice(-2) + "." + ("00"+now.getMilliseconds()).slice(-3);
console.log(now_str);

C

gettimeofday()を使えばマイクロ秒まで取得できる。
printfが使えるので整形は簡単だが、取得までがめんどくさい。

#include <stdio.h>
#include <time.h>
#include <sys/time.h>
#include <errno.h>

int main(void){
    struct tm *now; // 年/月/日/時/分/秒などのメンバを持つ構造体
    struct timeval total_usec; // 経過秒取得用変数
    int year, month, day, hour, min, sec, usec;

    /* 現在時刻(経過秒)取得 */
    if(gettimeofday(&total_usec, NULL) == -1){
        fprintf(stderr,"gettimeofday ERRNO=%d", errno);
        return -1;
    }

    /* 経過秒変換 */
    now = localtime(&total_usec.tv_sec); // 経過秒を日本時刻に変換
    year = now->tm_year+1900; //今年に変換
    month = now->tm_mon+1; //今月に変換
    day = now->tm_mday; //今日を取得
    hour = now->tm_hour;
    min = now->tm_min;
    sec = now->tm_sec;
    usec = total_usec.tv_usec; //マイクロ秒

    printf("%d/%02d/%02d %02d:%02d:%02d.%d\n",year,month,day,hour,min,sec,usec);
    return(0);
}

Swift

import UIKit

let formatter = DateFormatter()
formatter.dateFormat = "yyyy/MM/dd HH:mm:ss.SSS"
print(formatter.string(from: Date()))

SQL

CURRENT_TIMESTAMP関数を使う。引数は精度で(6)だとマイクロ秒まで取得できる。

SELECT CURRENT_TIMESTAMP(3);

整形する場合は、データベースごとに用意されている独自関数を利用する。

mysql
SELECT DATE_FORMAT(CURRENT_TIMESTAMP(3),'%Y/%m/%d %H:%i:%S.%f');
postgresql
SELECT TO_CHAR(CURRENT_TIMESTAMP(3), 'YYYY/MM/DD HH:MI:SS.MS');
6
9
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
6
9