FC2ブログ

日付フォーマットのパターン

2010. 05. 26
前回の『クロックでカレンダーを指定する』で出てきた『Unicode Technical Standard #35/Locale Data Markup Language/Appendices/Date Format Patterns』を訳してみます。

●付録F:日付フォーマットのパターン

日付パターンの文字列の文字は、カレンダーの日付と時刻のデータを特定の文字列で置き換え、カレンダーの書式用のデータを生成するものです。

後述する文字は、指定したロケールのフォーマットに適した形式を示すために使用されます。

以下に例を示します。

パターン結果(特定のロケール)
yyyy.MM.dd G 'at' HH:mm:ss zzz1996.07.10 AD at 15:08:56 PDT
EEE, MMM d, ''yyWed, July 10, '96
h:mm a12:08 PM
hh 'o''clock' a, zzzz12 o'clock PM, Pacific Daylight Time
K:mm a, z0:00 PM, PST
yyyyy.MMMM.dd GGG hh:mm aaa01996.July.10 AD 12:08 PM

文字は複数回使用されることがあります。

例えば、年の書式で y を使用する場合、『yy』では『99』となり、また『yyyy』とすると『1999』となります。

ほとんどの数値フィールドは、文字数がフィールドの幅を指定することになります。

例えば、時間の書式で h を使用する場合、『h』では『5』となりますが、『hh』とすると『05』となります。

いくつかの文字は数値の指定に関わらず、省略または完全な形式で使用する必要がありますが、下表のように他の選択肢がある場合もあります。

注:後方互換性のため月と曜日に関しては、5文字を指定した場合に短い形式になります。


フィールド文字列 数値 説明
紀元G1AD現在の日付の紀元を文字列に置き換えます
y1..n1996
Y1..n1997ISO年間週数カレンダーで使われる(年間週数の)年。
通常の年とは異なります。
u1..n4601拡張した年。
これはカレンダーシステムの年を一桁の数字で指定し、全て
の上(過去)の範囲を網羅します。
例えばユリウス暦の場合、年数は正の値で、BCEまたはCE
を併記します。
ユリウス暦に拡張した年の値を割り当てる場合、正の値は
CEに、負の値はBCEになり、0年はBCE 1年になります。
M1..29月は1または2の場合は数字、3は省略した名前、4は完全な
名前、5は短縮した名前になります。
3Sept
4September
5S
w1..227年間週数
W13月間週数
d1..21日はその月の日を示します
D1..3345年間日数
F12  月内における週の日を示します。
例えば、7月第2週の水曜日など。
(曜日に関係なく、1~7日は1、8~14日は2という結果に
なります) 
g1..n2451334ユリウス通日。
ユリウス通日は通常の暦とは2つの異なる考えに基づいてい
ます。
まず起点となるのが紀元前4713年1月1日GMTですが、深夜
0時ではなく、昼の12時になっています。
次に各地域のタイムゾーンに依存せず、GMTを基準として
計算しています。
日付に関連する全ての分野で扱えるような単一の数値として
考えられています。
(原文では『Modified Julian day』とあり、修正ユリウス
日(MJD)を指しているようにも見えますが、説明や左項の
例などからユリウス通日(AJD)と思われます。
『修正ユリウス日』ではなく『ユリウス日への変換』と解釈
するようです。従って説明も直訳すると矛盾する点もあるの
で『Wikipedia/ユリウス通日』を参考に解釈しています)
曜日 E1..23曜日は3は省略した名前、4は完全な名前、5は短縮した名前
になります。
(1~2の数値表現の場合)日曜は常に1です。
3Tues
4Tuesday
5T
e1..22ローカルの曜日は、(1~2の)数値表示以外は『E』と同じ
です。
数値表示はローカルで週の始まる曜日に依存します。
例では、週の初日が月曜の場合を示しています。
3Tues
4Tuesday
5T
期間a1AMAMまたはPM
h1..211時(1~12)
H1..213時(0~23)
K1..20時(0~11)
k1..224時(1~24)
m1..259分は1または2桁で示し、0で補完されます
s1..212秒は1または2桁で示し、0で補完されます
S1..n3456小数点以下の秒は、指定桁数に丸められます。
(例は『12.34567』秒の場合)
A1..n69540000日間ミリ秒数(例は19時間19分を表しています)。
この領域は他の時間帯領域を含まず、全ての時間関連の領域
を合成し、正確に動作します。
(つまり、秒や分、時という単位領域も含めて数えて示すと
いう意味です)
この値はDST(夏時間)への移行日のような不連続の時間
も表します。
DSTに入る日は前方にジャンプし、DSTが終わる日は後方
にジャンプします。
これはローカルタイムの値に影響されるので、取得する際
には注意が必要です。
時間帯 z1PT時間帯は、1は省略した壁時間(設定されているローカルの
時間帯)、2は長い壁時間、3は省略したタイムゾーン、4は
完全なタイムゾーンの名前になります。
設定されている時間帯に名前が無い場合、利用可能な代わり
のデータを使用します。
(この設定値は言語環境とタイムゾーンの設定地域によって
表現が異なります。日本語環境でタイムゾーンが日本の
場合、1~3は『JST』、4で『日本標準時』となります)
2Pacific
Time
3PDT
4Pacific
Daylight
Time
Z1GMT
-08:00
1はGMT(グリニッジ標準時)を使った書式、2はRFC 822
(電子メールに関する規約)の書式になります
(RFC 822のタイムゾーン表記に関しては塚本牧生さんの
サイト『Walrus,Digit.』の『Walrus,Digit./Perlメモ/
RFC#822形式の日時の解析
』を参照してください)
2-800


●AM/PM

国によっては、慣習として日付が24時間フォーマットのみの場合もあり、amとpmの文字列を異なる文字列でローカライズして表す必要があります。

24時間フォーマットの場合使用することはありませんが、テストや例外処理のために必要な場合があります。


●紀元

グレゴリオ暦では『BC』と『AD』の2値だけあります。

これらの値は他の言語の場合に変換することができ、スペイン語の場合は『a.C.』と『d.C.』のようになりますが、グレゴリオ暦では他に紀元はありません。

他のカレンダーには異なる紀元の番号があります。

指定するカレンダーによって、紀元名を変換する必要があります。


●年間週数

年間週数の計算の値は1~53の範囲になります。

週の『1』は1年の最初の週で、その年の最小の数の日にちが含まれています。

1年は1~52週(場合によっては53週)になります。

例えば、1998年1月1日は木曜日でした。

もし週の最初の日が月曜で、最小の日にちが4日の場合(この条件は多くの国の基準としてISO 8601に反映されています)、週の『1』は1997年12月29日から始まり、1998年1月4日で終わりとなります。

しかし、週の最初の日を日曜とした場合、1998年の週の『1』は1998年1月4日から始まって1998年1月10日に終わることになり、1998年の最初の3日間は1998年の『53』週となります。

月間週数も同様に計算されます。


●週の要素

・firstDay

カレンダーの目的のため、週の最初の(頭となる)日を表します。

何故なら、カレンダー間で日にちを変える命令をした場合、この値をキーワードとして使い、例えば『日曜、月曜、・・・』といった値を現在使われているローカライズの名前に置き換えるからです。

・miniDays(Minimal Days in First Week)

年間週数または月間週数で最初の週を求める、最小日にちです。

例えば、最初の週の定義を『最小の日を1日』としてそれを含む週とする場合が、この値は『1』となります。

もし最初の週を『完全に7日間を含む週』と定義したい場合は、この値を『7』とします。

・weekendStart、weekendEnd

週末の開始または終了の曜日と時間を示します。

firstDayと同様に、キーワードの代わりに番号が使用されます。



参考文献

Unicode Technical Standard #35/Locale Data Markup Language/Appendices/Date Format Patterns

Wikipedia/ユリウス暦

Wikipedia/紀元

Wikipedia/ユリウス通日

Wikipedia/夏時間

Wikipedia/グリニッジ標準時

通信用語の基礎知識/RFC 822

arslab's commo/?/julian day

Walrus,Digit./Perlメモ/RFC#822形式の日時の解析

基礎からのiOS SDK基礎からのiOS SDK
(2010/10/09)
鶴薗 賢吾、松浦 健一郎 他

商品詳細を見る



0 Comments
Leave a comment
管理者にだけ表示を許可する
Top
0 Trackbacks
Top
Calendar
08 | 2018/09 | 10
Sun Mon Tue Wed Thu Fri Sat
- - - - - - 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 - - - - - -
Recent Articles
iTunes


Swift
詳解Swift第4版(01)〜Swiftでプログラミング
詳解Swift第4版(02)〜関数
詳解Swift第4版(03)〜構造体
詳解Swift第4版(06)〜基本的なデータ型
詳解Swift第4版(07)〜パターン
詳解Swift第4版(08)〜クラスと継承
詳解Swift第4版(09)〜メモリ管理
詳解Swift第4版(10)〜拡張

詳解Swift第3版(01)〜Swiftでプログラミング
詳解Swift第3版(02)〜関数
詳解Swift第3版(03)〜構造体
詳解Swift第3版(05)〜基本的なデータ型
詳解Swift第3版(06)〜パターン
詳解Swift第3版(07)〜演算子
詳解Swift第3版(08)〜クラスと継承
詳解Swift第3版(09)〜メモリ管理
詳解Swift第3版(10)〜プロトコル
詳解Swift第3版(11)〜拡張
詳解Swift第3版(12)〜エラー処理
詳解Swift第3版(13)〜クロージャ
詳解Swift第3版(14)〜ジェネリクス

詳解Swift改訂版(01)〜Swiftでプログラミング
詳解Swift改訂版(02)〜関数
詳解Swift改訂版(03)〜構造体
詳解Swift改訂版(04)〜オプショナル
詳解Swift改訂版(05)〜基本的なデータ型
詳解Swift改訂版(06)〜パターン
詳解Swift改訂版(07)〜演算子
詳解Swift改訂版(08)〜クラスと継承
詳解Swift改訂版(09)〜メモリ管理
詳解Swift改訂版(10)〜プロトコル
詳解Swift改訂版(11)〜拡張
詳解Swift改訂版(12)〜エラー処理
詳解Swift改訂版(13)〜クロージャ
詳解Swift改訂版(14)〜ジェネリクス

詳解Swift(1)〜Swiftでプログラミング
詳解Swift(2)〜関数
詳解Swift(3)〜構造体
詳解Swift(4)〜オプショナル
詳解Swift(5)〜基本的なデータ型
詳解Swift(6)〜パターン
詳解Swift(7)〜演算子
詳解Swift(8)〜クラスと継承
詳解Swift(9)〜メモリ管理
詳解Swift(10)〜プロトコル
詳解Swift(11)〜拡張
詳解Swift(12)〜クロージャ
詳解Swift(13)〜ジェネリクス
詳解Swift(14)〜C/Objective-Cとのデータ受け渡し

文字列と文字(Swift 4)
Swift 2における文字列
Categories
Tips
WACOM


ARC
Technical Q&A
情報プロパティリストキー
Start Developing iOS Apps Today
Amazon


Reference
NSApplicationDelegateプロトコル
NSArrayクラス
NSAutoreleasePoolクラス
NSBundleクラス
NSBundle UIKit追加分
NSCalendarクラス
NSCoderクラス
NSCodingプロトコル
NSCopyingプロトコル
NSDataクラス
NSDateクラス
NSDateFormatterクラス
NSDictionaryクラス
NSEntityDescriptionクラス
NSEnumeratorクラス
NSErrorクラス
NSExceptionクラス
NSFetchRequestクラス
NSFileHandleクラス
NSFileManagerクラス
NSIndexPathクラス
NSIndexPath UIKit追加分
NSKeyedArchiverクラス
NSKeyedUnarchiverクラス
NSKeyValueCodingプロトコル
NSLocaleクラス
NSManagedObjectクラス
NSManagedObjectContextクラス
NSManagedObjectModelクラス
NSMutableArrayクラス
NSMutableCopyingプロトコル
NSMutableDictionaryクラス
NSMutableSetクラス
NSNotificationクラス
NSNotificationCenterクラス
NSNullクラス
NSNumberクラス
NSObjectクラス
NSObject UIKit追加分
NSObjectプロトコル
NSPersistentStoreクラス
NSPersistentStoreCoordinatorクラス
NSPredicateクラス
NSPropertyListSerializationクラス
NSRunLoopクラス
NSSetクラス
NSStringクラス
NSString UIKit追加分
NSTimerクラス
NSTimeZoneクラス
NSURLクラス
NSURLProtectionSpaceクラス
NSURLRequestクラス
NSUserDefaultsクラス
NSValueクラス

UIActionSheetクラス
UIActionSheetDelegateプロトコル
UIActivityIndicatorViewクラス
UIAlertViewクラス
UIAlertViewDelegateプロトコル
UIApplicationクラス
UIApplicationDelegateプロトコル
UIBarButtonItemクラス
UIBarItemクラス
UIButtonクラス
UIColorクラス
UIControlクラス
UIDatePickerクラス
UIDeviceクラス
UIEventクラス
UIFontクラス
UIGestureRecognizerクラス
UIImageクラス
UIImageViewクラス
UIKit Function
UILabelクラス
UINavigationControllerクラス
UINavigationItemクラス
UIPickerViewクラス
UIPickerViewDataSourceプロトコル
UIPickerViewDelegateプロトコル
UIPinchGestureRecognizerクラス
UIResponderクラス
UIScreenクラス
UIScrollViewクラス
UISearchBarクラス
UISearchBarDelegateプロトコル
UISegmentedControlクラス
UISliderクラス
UISwipeGestureRecognizerクラス
UISwitchクラス
UITableViewクラス
UITableViewCellクラス
UITableViewControllerクラス
UITableViewDataSourceプロトコル
UITableViewDelegateプロトコル
UITapGestureRecognizerクラス
UITextFieldクラス
UITextFieldDelegateプロトコル
UITextInputTraitsプロトコル
UITextViewクラス
UITextViewDelegateプロトコル
UIToolbarクラス
UITouchクラス
UIViewクラス
UIViewControllerクラス
UIWebViewクラス
UIWebViewDelegateプロトコル
UIWindowクラス

AVAudioPlayerクラス
AVAudioPlayerDelegateプロトコル

CADisplayLinkクラス
CAEAGLLayerクラス
CALayerクラス

CGAffineTransform
CGBitmapContext
CGColor
CGColorSpace
CGContext
CGGeometry
CGImage
CGPath

EAGLContextクラス
EAGLDrawableプロトコル

Foundation Constants
Foundation Data Types
Foundation Functions

MPMediaItemクラス
MPMediaItemArtworkクラス
MPMediaPlaylistクラス
MPMediaPropertyPredicateクラス
MPMediaQueryクラス
MPMusicPlayerControllerクラス

Randomization Services

System Sound Services
OpenGL ES
SQLite
Monthly Archives
Recent Comments
Recent TrackBacks
RSS Link
QR Code
QR
Profile

水月杏香

Author:水月杏香
永遠の初心者プログラマ。

Visitors