Rubyで時刻日付を扱うまとめ

| コメント(0) | トラックバック(0)

rubyで時刻取得や日付計算のまとめメモ公開

# strftime options

    %A: 曜日の名称(Sunday, Monday ... )
    %a: 曜日の省略名(Sun, Mon ... )
    %B: 月の名称(January, February ... )
    %b: 月の省略名(Jan, Feb ... )
    %C: 世紀 (2009年であれば 20)
    %c: 日付と時刻
    %D: 日付 (%m/%d/%y)
    %d: 日(01-31)
    %e: 日。一桁の場合、半角空白で埋める ( 1..31)
    %F: %Y-%m-%d と同等 (ISO 8601の日付フォーマット)
    %H: 24時間制の時(00-23)
    %h: %b と同等
    %I: 12時間制の時(01-12)
    %j: 年中の通算日(001-366)
    %k: 24時間制の時。一桁の場合、半角空白で埋める ( 0..23)
    %L: ミリ秒 (000.999)
    %l: 12時間制の時。一桁の場合、半角空白で埋める ( 0..12)
    %M: 分(00-59)
    %m: 月を表す数字(01-12)
    %n: 改行 (\n)
    %N: 秒の小数点以下。桁の指定がない場合は9桁 (ナノ秒)、%6N: マイクロ秒 (6桁)、%3N: ミリ秒 (3桁)
    %P: 午前または午後(am,pm)
    %p: 午前または午後(AM,PM)
    %R: 24時間制の時刻。%H:%M と同等。
    %r: 12時間制の時刻。%I:%M:%S %p と同等。
    %S: 秒(00-60) (60はうるう秒)
    %s: 1970-01-01 00:00:00 UTC からの経過秒
    %T: 24時間制の時刻。%H:%M:%S と同等。
    %t: タブ文字 (\t)
    %U: 週を表す数。最初の日曜日が第1週の始まり(00-53)
    %u: 月曜日を1とした、曜日の数値表現 (1..7)
    %v: VMS形式の日付 (%e-%b-%Y)
    %V: ISO 8601形式の暦週 (01..53)
    %W: 週を表す数。最初の月曜日が第1週の始まり(00-53)
    %w: 曜日を表す数。日曜日が0(0-6)
    %X: 時刻
    %x: 日付
    %Y: 西暦を表す数
    %y: 西暦の下2桁(00-99)
    %Z: タイムゾーン
    %z: タイムゾーン。UTCからのオフセット (例  0900)
    %%: %自身
ruby
# -*- coding: utf-8 -*-    
# 日付の作成 ###################################################
t = Time.local 2012,3,16,9,33,50
p t.strftime "%Y-%m-%d %H:%M:%S %Z"
    #=> "2012-03-16 09:33:50 JST"

t = Time.mktime 2012,3,16,9,33,50
p t.strftime "%Y-%m-%d %H:%M:%S %Z"
    #=> "2012-03-16 09:33:50 JST"


#現在の日付作成
t = Time.now
p t.strftime "%Y-%m-%d %H:%M:%S %Z"
    #=> "2012-04-11 20:46:47 JST"



## Date DateTimeを利用は require が必要
require 'date'

d = Date.today

p d.year
p d.month
p d.day


dt = DateTime.now

p dt.year
p dt.month
p dt.day
p dt.hour
p dt.min
p dt.sec
p dt.wday   #曜日 0日- 6土
p dt.yday   #1月1日から通算日数
p dt.zone


# 文字列から日付時刻に変換 #####################################
#
## Date.parse methodを利用のため
require 'date'

## Time.parse methodを利用のため
require 'time'


# 文字列からTimeオブジェクト変換
s = "2012/04/01 09:30"
t = Time.parse s
p t      #=> 2012-04-01 09:30:00  0900
p t.year #=> 2012


# その他の形式
t = Time.parse "Sun, 1 Apr 2012 09:30:01  0900"
p t      #=> 2012-04-01 09:30:01  0900
p t.year #=> 2012


# 特定形式の日付型
p Time.rfc2822 "Mon, 2 Apr 2012 09:00:00  0900"
    #=> 2012-04-02 09:00:00  0900

p Time.xmlschema "20012-04-02T09:00:00Z"
    #=> 20012-04-02 09:00:00 UTC

p Time.httpdate "Sun, 01 Apr 2012 09:00:00 GMT"
    #=> 2012-04-01 18:00:00  0900



# 日付の計算 ###################################################

#月の日数を取得
t = Time.local     2012, 4, 1
d = Date.new       2012, 4, 1
dt = DateTime.new  2012, 4, 1


#Timeの加算減算は秒単位
t_plus = t   10
p t_plus.strftime "%Y-%m-%d %H:%M:%S %Z"
    #=> "2012-04-01 00:00:10 JST"

# Date の日付計算
d_plus = d   10
p d_plus.strftime "%Y-%m-%d %H:%M:%S %Z"
    #=> "2012-04-11 00:00:00  00:00"

#DateTime の日付計算
dt_puls = dt - 10
p dt_puls.strftime "%Y-%m-%d %H:%M:%S %Z"
    #=> "2012-03-22 00:00:00  00:00"

# date DateTime 月計算 << >>
d_plus = d << 3
p d_plus.strftime "%Y-%m-%d %H:%M:%S %Z"
    #=> "2012-01-01 00:00:00  00:00"

d_plus = d >>  3
p d_plus.strftime "%Y-%m-%d %H:%M:%S %Z"
    #=> "2012-07-01 00:00:00  00:00"


# 年計算は 年数  12倍 をする
d_plus = d << 1 * 12
p d_plus.strftime "%Y-%m-%d %H:%M:%S %Z"
    #=> "2011-04-01 00:00:00  00:00"


# 月の日数を取得
d = Date.new 2012,2
tmp_day = d >> 1
tmp2_day = tmp_day -1
p  tmp2_day.day
    #=> 29

関連記事

トラックバック(0)

トラックバックURL: http://mukaer.com/cgi-bin/mt/mt-tb.cgi/79

コメントする

PR

PR





検索

Loading

メニュー

twitter