プログラム言語 標準関数(日時系)

時間型変数

DateTime myDate1 = new DateTime();
DateTime myDate1 = new DateTime(2000, 1, 1, 10, 10, 10);

システム日時
DateTime dt = DateTime.Now;

Dim myDate1 As New DateTime();
Dim myDate1 As New DateTime(2000, 1, 1, 10, 10, 10);
Date型
import java.util.Date;

// 現在日時の取得
Date date = new Date();
System.out.println(date);
// ⇒ Sat Feb 14 12:19:10 JST 2015

//1970年1月1日午前0時(GMT)から現在までの経過時間(ミリ秒)
long nowTime = date.getTime();

// 1000ミリ秒 × 60 ⇒ 1分
// × 60 ⇒ 1時間
// × 24 ⇒ 1日

long oneday = 1000 * 60 * 60 * 24;

//現在から、1日後の時間
Date date = new Date(nowTime + oneday);
// ⇒ 1970年1月2日午前0時(GMT)

Calendar型
import java.util.Calendar;

// 現在日時の取得
Calendar calendar = Calendar.getInstance();
calendar.set(2000, 1, 1,10,0,0);

// Date型 ⇒ Calendar型 変換
calendar.setTime(date);

// Calendar型 ⇒ Date型 変換
Date date = calendar.getTime();

date_default_timzone_set('Asia/Tokyo');
$date = date(Y/m/d H:i:s);

var nowTime = new Date();
// nowTime : Thu Oct 16 2014 04:27:31 GMT+0900

var myDate = new Date(2000,1,1,1,1,1);
//2000年1月1日1時1分1秒を作成

時・分・秒等の取得

DateTime myTime = new DateTime();

int h = myTime.Hour;
int m = myTime.Minute;
int s = myTime.Second;
int ms = myTime.Millisecond;
int y = myTime.Year;
int m = myTime.Month;
int d = myTime.Day;
DayOfWeek week = myTime.DayOfWeek;
// ⇒ week : DayOfWeek.Saturday

Dim myTime As New DateTime()

Dim h As Integer = myTime.Hour
Dim m As Integer = myTime.Minute
Dim s As Integer = myTime.Second
Dim ms As Integer = myTime.Millisecond
Dim y As Integer = myTime.Year
Dim m As Integer = myTime.Month
Dim d As Integer = myTime.Day
Dim week As DayOfWeek = myTime.DayOfWeek
// ⇒ week : DayOfWeek.Saturday

Year()、DateTime.Year()
ReturnValue = DateTime.Year("2009/12/31")
ReturnValue = "2009"

Month()、DateTime.Month()
ReturnValue = DateTime.Month("2009/12/31")
ReturnValue = "12"

Day()、DateTime.Day()
ReturnValue = DateTime.Day("2009/12/31")
ReturnValue = "31"

WeekDay()、DateTime.WeekDay()
ReturnValue = DateTime.WeekDay("2009/12/31")
ReturnValue = "5" (1:日、2:月、3:火)

WeekDayName()
ReturnValue = WeekDayName(4)
ReturnValue = "水" (1:日、2:月、3:火)

Hour()、DateTime.Hour()
ReturnValue = DateTime.Hour("15:30")
ReturnValue = 15

Minute()、DateTime.Minute()
ReturnValue = DateTime.Minute("15:30")
ReturnValue = 30

Second()、DateTime.Second()
ReturnValue = DateTime.Second("15:30:45")
ReturnValue = 45

【ミリ秒を取得する場合】
※標準関数ではミリ秒を取得できない

Public Declare Sub GetLocalTime Lib "kernel32" (lpSystemTime As SYSTEMTIME)

Public Type SYSTEMTIME
 wYear As Integer
 wMonth As Integer
 wDayOfWeek As Integer
 wDay As Integer
 wHour As Integer
 wMinute As Integer
 wSecond As Integer
 wMilliseconds As Integer
End Type

Dim typeNow As SYSTEMTIME
Dim sglNow As Single

Call GetLocalTime(typeNow)
sglNow = CSng(typeNow.wSecond & "." & typeNow.wMilliseconds)

import java.util.Calendar;

Calendar calendar = Calendar.getInstance();
calendar.set(2000, 1, 1, 10, 0, 0);

int y = calendar.get(Calendar.YEAR);
int m = calendar.get(Calendar.MONTH);
int d = calendar.get(Calendar.DATE);
int w = calendar.get(Calendar.WEDNESDAY);
int h1 = calendar.get(Calendar.HOUR);
int h2 = calendar.get(Calendar.HOUR_OF_DAY);
int min = calendar.get(Calendar.MINUTE);
int sec = calendar.get(Calendar.SECOND);
int ms = calendar.get(Calendar.MILLISECOND);
int ampm = calendar.get(Calendar.AM_PM);

var myDate = new Date();

//myDateから取得した年に1を加算
myDate.setYear(myDate.getFullYear() + 1);

//myDateから取得した月に1を加算
myDate.setMonth(myDate.getMonth() + 1);

//myDateから取得した日に1を加算
myDate.setDate(myDate.getDate() + 1);

//myDateから取得した曜日を表す数字を表示
alert(myDate.getDay());

//myDateから取得した時間に1を加算
myDate.setHours(myDate.getHours() + 1);

//myDateから取得した分に1を加算
myDate.setMinutes(myDate.getMinutes() + 1);

//myDateから取得した秒に1を加算
myDate.setSeconds(myDate.getSeconds() + 1);

//myDateから取得したミリ秒に1ミリ秒を加算
myDate.setMilliseconds(myDate.getMilliseconds() + 1);

//1970年1月1日00:00:00からの経過時間をミリ秒で取得
var time = myDate.getTime();

//時刻設定(引数 : 1970年1月1日00:00:00からの経過時間(ミリ秒))
var time = Date();
time.setTime(123456789);

加減

dt = dt.Add(TimeSpan value);
dt = dt.AddDays(double value);
dt = dt.AddHours(double value);
dt = dt.AddMilliseconds(double value);
dt = dt.AddMinutes(double value);
dt = dt.AddMonths(int months);
dt = dt.AddSeconds(double value);
dt = dt.AddTicks(long value);
dt = dt.AddYears(int value);

import java.util.Calendar;

Calendar calendar = Calendar.getInstance();

// 10日後
calendar.add(Calendar.DATE, 10);
// 10時間後
calendar.add(Calendar.HOUR, 10);

表示形式

DateTime myDate = new DateTime(2005, 1, 1, 10, 10, 10);
string disp9 = myDate.ToString("yyyy/MM/dd(ddd) hh:mm:ss");
//⇒disp9 : 2005/01/01(土) 10:10:10

string disp10 = myDate.ToString("yy年M月d日 ddd曜日 h時m分s秒");
//⇒disp10 : 05年1月1日 土曜日 10時10分10秒

24時間表記
string dt = new DateTime.Now.ToString(“yyyy/MM/dd HH:mm:ss”);

12時間表記
string dt = new DateTime.Now.ToString(“yyyy/MM/dd hh:mm:ss”);

Dim myDate As DateTime = New DateTime(2005, 1, 1, 10, 10, 10)
Dim disp9 As String = myDate.ToString("yyyy/MM/dd(ddd) hh:mm:ss")
‘⇒disp9 : 2005/01/01(土) 10:10:10

Dim disp10 As String = myDate.ToString("yy年M月d日ddd曜日 h自m分s秒")
‘⇒disp10 : 05年1月1日 土曜日 10時10分10秒

SimpleDateFormat myFormat = new SimpleDateFormat("yyyy年MM月dd日 E曜日 a hh時mm分ss秒");
System.out.println(myFormat.format(date));
// ⇒ 2015年02月14日 土曜日 午後 04時50分53秒

myFormat.applyPattern("yyyy/MM/dd kk:mm:ss");
System.out.println(myFormat.format(date));
// ⇒ 2015/02/14 16:49:40

$result = $date->format('Y/m/d');
$result = $date->format('Y/m/d H:i:s');

時間(日)差

DateTime myDate1 = new DateTime(2000, 1, 1, 10, 10, 10);
DateTime myDate2 = new DateTime(2000, 2, 1, 10, 10, 10);

int diffYear = myDate2.Year – myDate1.Year;
int diffMonth = myDate2.Month – myDate1.Month;
int diffDay = myDate2.Day – myDate1.Day;

TimeSpan span = myDate2 – myDate1;
diffDay = span.Days;

int diffHour = myDate2.Hour – myDate1.Hour;
diffHour = span.Hours;

int diffMinute = myDate2.Minute – myDate1.Minute;
diffMinute = span.Minutes;

int diffSecond = myDate2.Second – myDate1.Second;
diffSecond = span.Seconds;

Dim myDate1 As New Date(2000, 1, 1, 10, 10, 10)
Dim myDate2 As New Date(2000, 2, 1, 10, 10, 10)

Dim diffYear As Integer = DateDiff(DateInterval.Year, myDate1, myDate2)
Dim diffMonth As Integer = DateDiff(DateInterval.Month, myDate1, myDate2)
Dim diffDay As Integer = DateDiff(DateInterval.Day, myDate1, myDate2)
Dim diffDayOfYear As Integer = DateDiff(DateInterval.DayOfYear, myDate1, myDate2)
Dim diffWeekday As Integer = DateDiff(DateInterval.Weekday, myDate1, myDate2)

Date beforeDate = new Date();
System.out.println(beforeDate);
// Sat Feb 14 19:11:07 JST 2015

// ↑の1分後
Date afterDate = new Date(beforeDate.getTime() + 60000);
System.out.println(afterDate);
// Sat Feb 14 19:12:07 JST 2015

Boolean beforeAfter;
// 日時が前か?
beforeAfter = beforeDate.before(afterDate);
// beforeAfter : true

// 日時が後か?
beforeAfter = beforeDate.after(afterDate);
// beforeAfter : false

// 時間差(ミリ秒)
long timeDiff = afterDate.getTime() – beforeDate.getTime();
// timeDiff : 60000

Calendar beforeCal = Calendar.getInstance();
Calendar afterCal = Calendar.getInstance();
afterCal.setTimeInMillis(beforeCal.getTimeInMillis());
afterCal.add(Calendar.MINUTE, 1);

// 時間差(ミリ秒)
timeDiff = afterCal.getTimeInMillis() – beforeCal.getTimeInMillis();
// timeDiff : 60000

//2つの時刻の差をミリ秒で取得(「時・分・秒等の取得/getTime()」参照)
var time = myDate1.getTime() – myDate1.getTime2();

文字列変換

string[] strDate = {
  "2014/1/1",
  "1/1",
  "2014/2/30",
  "2014/1/1 10:10:10",
  "2014/1/1 10:10:65"
};

try
{
  foreach (string elm in strDate)
  {
    DateTime dteTest = DateTime.Parse(s: elm);
    // ⇒ {2014/01/01 00:00:00}
    // ⇒ {2014/01/01 00:00:00}
    // ⇒ エラー
    // ⇒ {2014/01/01 10:10:10}
    // ⇒ エラー
  }
}
catch (Exception ex)
{
  Console.WriteLine(ex.Message);
}

foreach (string elm in strDate)
{
  DateTime dteResult;
  if (DateTime.TryParse(s:elm, result: out dteResult))
  {
    Console.WriteLine(dteResult.ToString());
    // ⇒ {2014/01/01 00:00:00}
    // ⇒ {2014/01/01 00:00:00}
    // ⇒ {2014/01/01 10:10:10}
  }
}

世界協定時刻(UTC)変換

DateTime dt = New DateTime(2000, 9, 24, 15, 30, 0)

//世界協定時刻(UTC)に変換する
DateTime utcTime = TimeZoneInfo.ConvertTimeToUtc(dt)

//ローカル時刻に変換する
DateTime localTime = TimeZoneInfo.ConvertTimeFromUtc(utcTime, TimeZoneInfo.Local)

Dim dt As New DateTime(2000, 9, 24, 15, 30, 0)

‘世界協定時刻(UTC)に変換する
Dim utcTime As DateTime = TimeZoneInfo.ConvertTimeToUtc(dt)

‘ローカル時刻に変換する
Dim localTime As DateTime = TimeZoneInfo.ConvertTimeFromUtc(utcTime, TimeZoneInfo.Local)