日付・時刻データの変換

datenum

入力された日時を西暦0000年1月0日からの経過日数として値に変換する.
出力はただの数値のため,演算に使える.
単位はdayで,1日先の日付になると値が1増える.1時間は1/24(=0.0417)になる.

  • 日時を表す文字列→シリアル値
    DateNumber = datenum(DateString)
    DateNumber = datenum(DateString,formatIn)
    formatInは,DateStringの形式に合わせて,'yyyy/mm/dd'のように使う.下記は例.
    >> datenum('2000/01/01','yyyy/mm/dd')
    ans = 730486
    >>datenum('2000/01/02 03:04:05' ,'yyyy/mm/dd HH:MM:SS')
    ans = 7.3049e+05
  • 日時を表す数値(整数)→シリアル値
    DateNumber = datenum(Y,M,D)
    DateNumber = datenum(Y,M,D,H,MN,S)
    DateNumber = datenum(DateVector)
    単純に年月日,時分秒を整数として入力する.年月日までの3つか,秒までの6つのどちらかしか受け付けないので注意.
    DateVectorは,m行3列(年月日)かm行6列(年月日時分秒)の行列から,m個の値を返す.
    DateVectorを使うと一発で複数の変換ができ,forループ不要な点が良い.
    >> vec = [1990,06,01; 1990,07,01; 1990,08,01]
    vec = 
          1990           6           1
          1990           7           1
          1990           8           1
    >> datenum(vec)
    ans =
          726985
          727015
          727046
  • datetime型→シリアル値
    datetime型の変数tを入力するだけ.
    DateNumber = datenum(t)

datestr

日付を指定の形式で文字列に変換する.図の作成や表示で頻繁に使用する.

  • シリアル日付値(datenumの出力)→文字列
    DateString = datestr(DateNumber,formatOut)
    DateNumberはベクトルでもOK.
    formatOutは数値識別子(整数)か文字列ymd等の文字列で出力テキストの形式を指定する.
    数値識別子と出力形式の対応を覚えるのは大変なので,自分で書いて指定したほうが良い.
    >> datestr(726985,'yyyy/mm/dd')
    ans = 1990/06/01
    >> datestr(726985, 26) % formatOutの数値識別子
    ans = 1990/06/01
    >> datestr(726985.5,'mm/dd HH:MM')
    ans = 06/01 12:00
  • datetime型→文字列
    シリアル値→文字列の時と変わらない.
    DateString = datestr(t,formatOut)

datetime

※形式の指定に注意が必要.
入力引数をdatetime型の変数に変換する.datetime型も日付計算は可能.

  • 文字列→datetime型
    t = datetime(DateStrings,'InputFormat',infmt)
    infmtのフォーマット指定がdatenumやdatestrと異なる.特にmonthとminuteに注意する.
    月と時間は大文字のMとHでなければ正しく処理が行われない.
    datenumとdatestrでは,月が小文字のmで,分が大文字のMと認識するため紛らわしい.
    >> datetime('1990/06/01','InputFormat','yyyy/mm/dd') % datetimeではmは分として認識される
    ans = 1990/01/01 00:06:00
    >> datetime('1990/06/01','InputFormat','yyyy/MM/dd') % datetimeではMが月を表す
    ans = 1990/06/01
  • シリアル日付値(datenumの出力)→datetime型
    直接変換できるようにはなっていない.一回datestrでシリアル値を変換した後にdatetimeを使えばできる.
    ここでもdatestrとdatetimeのフォーマット指定方法が異なるのがわかる.
    >> datetime(datestr(726985.5,'yyyy/mm/dd HH:MM'),'InputFormat','yyyy/MM/dd HH:mm')
    ans = 1990/06/01 12:00:00

参考 MathWorks公式


Front page   Edit Diff Attach Copy Rename Reload   New List of pages Search Recent changes   Help   RSS of recent changes
Last-modified: 2018-01-10 (Wed) 11:41:39 (434d)