[ top ] [ prev ] [ up ] [ next ]

Phi::DateTime

Apollo(Delphi) で使用する標準的な日付+時間のクラス。

super class

Object

included modules

Comparable

class methods

new
now
引数がない場合
現在時刻となります。

引数がひとつの場合
文字列の場合には "yyyy/mm/dd hh:mm:ss" の形式を指定できます。ミリ秒は指定できません。"hh" 以降は省略可能で、省略した場合には0とみなされます。
Time Date オブジェクトを指定した場合には相当の時刻に変換して作成します。 Date の時刻は 00:00:00 になります。

引数が2個以上の場合
yyyy,mm,dd, hh,MM,ss,zz の順になります。hh 以降は省略可能です。ミリ秒も指定できます。

today
 今日の日付を返します。DateTime.now.date と同じです。

methods

year : Fixnum
year=
年の部分。出し入れ可能。

month : Fixnum
month=
月の部分。出し入れ可能。

day : Fixnum
day=
日の部分。出し入れ可能。

hour : Fixnum
hour=
時の部分。出し入れ可能。

minute : Fixnum
minute=
分の部分。出し入れ可能。

second : Fixnum
second=
秒の部分。出し入れ可能。

msec : Fixnum
msec=
ミリ秒の部分。出し入れ可能。

+
日付を1日増加させた DateTime を返す。
小数点部分がある場合には、1.0/(24*60*60*1000) で1ミリ秒を表す。

-
日付を1日減少させた DateTime を返す。
小数点部分がある場合には、1.0/(24*60*60*1000) で1ミリ秒を表す。

<
<=
<=>
>
>=
==
 時刻を比較する。
 右側がString、Time または Date の場合には DateTime に変換して比較する。
 * 注意:DateTime に変換するのは DateTime が左側にある場合だけです。右側にある場合には変換しません。左が文字列で右が DateTime の場合には文字列として比較されてしまい、結果として誤った結果になります。

===
=~
 検討中。使わないでください。(「所属する」という意味なので DateTime.new("2001/2/3") === 2001)とかDateTime.new("2001/2/3") === [2001,2])とかを判断すべきか?)。

between?
時刻が指定された範囲にあるかを調べる。
文字列等も使用可能。

date
 日付部分で構成される DateTime インスタンスを返す。

day_of_week
 曜日を数字で返す。1:日曜日〜7:土曜日。

end_of_month
 その日付が含む月末の 23:59:59.999 の DateTime を返す。

end_of_year
 その日付が含む年末の 23:59:59.999 の DateTime を返す。

format
 書式にしたがって文字列にします。

inc_month
 月の部分を増減した DateTime を返します。
 日付が月末を越えた場合には月末の日付になります。DateTime.new("2001/1/31").inc_month(1) => "2001/2/28"。

jd
 ユリウス日を返します。ユリウス日というのは天文学で使われる日付で、xxの正午を0.0 とした通算日数です。小数点部分に時刻を含います。Date クラスからの変換で使用しています。

time
 時刻部分の DateTime を返します。
 日付部分が0の DateTime は xx の日付の意味にもなるので、注意してください。

time_t
 Unix の time_t 相当の値を返します。Time クラスからの変換で使用しています。

to_a
 [y,m,d, h,M,s,z]という配列を返します。

to_s
 Phi.date_format グローバル変数で指定された形式の日付の後に,Phi.time_format グローバル変数で指定された形式の時刻が続く。DateTime 値の小数部分がゼロの場合,時刻は表示されない。
 デフォルトでは "yyyy/mm/dd hh:mm:ss" の書式で変換します。
 注意:DateTime.now にはミリ秒部分を含んでいるので、デフォルトで文字列にした後に DateTime に戻して比較するとイコールになりません。format("yyyy/mm/dd hh:mm:ss.zzz")で文字列に変換すれば正確です。

functions

Phi.date_separator
Phi.date_separator=
Phi.time_separator
Phi.time_separator=
文字列を DateTime に変換するときの日付区切り("/")、時刻区切り(":")です。

Phi.date_format
Phi.date_format=
Phi.time_format
Phi.time_format=
DateTime を文字列に変換するとき(to_s)のデフォルトの書式です。
デフォルトの内容は次の通り。
date_format = "yyyy/mm/dd"
time_format = "hh:mm:dd"
Phi.short_date_format
Phi.short_date_format=
Phi.short_time_format
Phi.short_time_format=
Phi.long_date_format
Phi.long_date_format=
Phi.long_time_format
Phi.long_time_format=

constants

Phi::LOCAL_TIME_DIFF
ローカルタイムと世界標準時との差を Float で返します。 DateTime#now はローカルタイム(日本標準時)を返しますので,世界標準時を求めるにはローカルタイムから LOCAL_TIME_DIFF を差し引けば ok 。
require "phi" ; include Phi
local  = DateTime.now
global = local - LOCAL_TIME_DIFF
p Phi::LOCAL_TIME_DIFF  ##  0.375
p local                 ##  #<Phi::DateTime: 2001/04/22 01:05:36>
p global                ##  #<Phi::DateTime: 2001/04/21 16:05:36>

format

指定子
表示内容

aaa
曜日を日本語の省略形(日〜土)で表示する
aaaa
曜日を日本語(日曜日〜土曜日)で表示する

c
Phi.date_format グローバル変数で指定された形式の日付の後に,Phi.time_format グローバル変数で指定された形式の時刻が続く。DateTime 値の小数部分がゼロの場合,時刻は表示されない
  • Phi.date_format == Phi.short_date_format , Phi.time_format == Phi.long_time_format

となっています。
d
日付を先頭のゼロなしで表示する(1 から 31 まで)
dd
日付を先頭のゼロも含めて表示する(01 から 31 まで)

ddd
ShortDayNames グローバル変数で指定された文字列を使って,曜日を省略形(日〜土)で表示する
dddd
LongDayNames グローバル変数で与えられた文字列を使って,曜日を完全形(日曜日〜土曜日)で表示する
ddddd
Phi.short_date_format グローバル変数で与えられた形式で日付を表示する
dddddd
Phi.long_date_format グローバル変数で与えられた形式で日付を表示する

e
元号に基づく和暦の年を 0 を付けずに表示する(1995 年ならば 7)
ee
元号に基づく和暦の年を 2 桁で表示する(1995 年ならば 07)
g
元号の先頭 1 文字を表示する(明,大,昭,平)。2.0 では,英字で表現された先頭 1 文字でしたが,このバージョンで変更されています。
gg
元号を表示する(明治,大正,昭和,平成)。2.0 では,元号の先頭 1 文字を表しましたが,このバージョンで変更されています。
ggg
元号を表示する(明治,大正,昭和,平成)

m
先頭にゼロのない数字(1〜12)として月を表示する。h 指定子または hh 指定子の直後に m 指定子を指定すると,月ではなく分が表示される
mm
先頭にゼロのある数字(01〜12)として月を表示する。h 指定子または hh 指定子の直後に mm 指定子を指定すると,月ではなく分が表示される

mmm
ShortMonthNames グローバル変数で与えられた文字列を使って,月を省略形(1〜12)で表示する
mmmm
LongMonthNames グローバル変数で与えられた文字列を使って,月を完全形(1月〜12月)で表示する

yy
年を 2 桁の数字(00〜99)で表示する
yyyy
年を 4 桁の数字(0000〜9999)で表示する

h
先頭にゼロのない数字(0〜23)として時を表示する
hh
先頭にゼロのある数字(00〜23)として時を表示する

n
先頭にゼロのない数字(0〜59)として分を表示する
nn
先頭にゼロのある数字(00〜59)として分を表示する

s
先頭にゼロのない数字(0〜59)として秒を表示する
ss
先頭にゼロのある数字(00〜59)として秒を表示する

zzz
先頭にゼロのある数字(000-999)としてミリ秒を表示する

t
Phi.short_time_format グローバル変数で与えられた形式で時刻を表示する
tt
Phi.long_time_format グローバル変数で与えられた形式で時刻を表示する

am/pm
先行する h 指定子または hh 指定子に 12 時間形式の時刻値を使い,正午以前の時間には am を,正午以降の時間には pm を表示する。am/pm 指定子には,大文字,小文字,大文字と小文字の両方が使え,指定のとおりに結果が表示される
a/p
先行する h 指定子または hh 指定子に 12 時間形式の時刻値を使い,正午以前の時間には a を,正午以降の時間には p を表示する。a/p 指定子には,大文字,小文字,大文字と小文字の両方が使え,指定のとおりに結果が表示される
ampm
先行する h 指定子または hh 指定子に 12 時間形式の時刻値を使い,正午以前の時間には TimeAMString グローバル変数の値を,正午以降の時間には TimePMString グローバル変数の値を表示する

/
Phi.date_separator グローバル変数で与えられた日付区切り文字を表示する
:
Phi.time_separator グローバル変数で与えられた時刻区切り文字を表示する

'xx' / "xx"
単引用符または二重引用符で囲まれた文字はそのまま表示され,形式には影響を与えない

形式指定子には大文字でも小文字でも使えます。どちらを使っても同じ結果になります。

z
先頭にゼロのない数字(0-999)としてミリ秒を表示する
zz
先頭にゼロのある数字(000-999)としてミリ秒を表示する
author: YOSHIDA Kazuhiro
[ top ] [ prev ] [ up ] [ next ]