NSDateクラス

2010. 10. 24
●概要

NSDateオブジェクトは時間の1点を表します。

NSDateはクラスクラスタで、1つのパブリックスーパークラスであり、時間に関する値とプログラムインターフェイスの指定を宣言します。

NSDateを使って生成したオブジェクトはdateオブジェクトと呼ばれます。

これは不変オブジェクトです。

クラスクラスタという性質のため、NSDateクラスが返すオブジェクトは抽象クラスのインスタンスではなく、プライベートサブクラスのインスタンスになります。

たとえdateオブジェクトのクラスがプライベートであってもインターフェイスはパブリックであり、抽象スーパークラスであるNSDateによって宣言されています。

一般的に、dateオブジェクトをインスタンス化する際には、最適なdate~クラスメソッドが呼び出されます。

NSDateは抽象クラスで、日時の生成、比較、表示や、期間の計算などの機能を提供します。

NSDateはプログラムインターフェイスを通して現在の最適なdateオブジェクトを要求して返します。

NSDateは、不変の時点から現在までの時間を表す、軽量なdateオブジェクトを返します。

このクラスは、任意の暦を表す基礎を提供するように設計されています。

NSDateの唯一の原始的なメソッドはtimeIntervalSinceReferenceDateで、他の全てのNSDateインターフェイスメソッドの基礎を提供します。

このメソッドは2001年1月1日(GMT)を基準とした参照時間を返します。

生成した日付を表す文字列を含み、dateFromString:メソッドやstringFromDate:メソッドを使って、NSdateFormatterのインスタンスの解析に使用してください。
(詳細は『Date Formatters』を参照してください)

NSDateのモデルは1582年10月でユリウス暦からグレゴリオ暦に変更されていて、暦の計算を連携して行うNSCalendarへの変換時に適用されます。

注:ただし、いくつかのロケールではグレゴリオ暦の採用時期が異なっており、例えばイギリスでは1752年9月まで切り替えられていませんでした。

NSDateには、『toll-free bridged』の対象としてCocoa FoundationのCFDate型があります。

これはFoudationオブジェクトを橋渡ししてCore Foundationの型に変換し、関数やメソッドで呼び出せることを意味します。

例えば、NSDate *パラメータをメソッドで参照する際、CFDateRefに渡し、CFDateRefパラメータとして関数で参照でき、(コンパイラの警告を抑えるために型変換をして)NSDateインスタンスに渡すこともできます。


サブクラス化の注意

NSDateのサブクラス化の主な理由は、特定の暦のシステムを操作するのに便利なメソッドのクラスを生成することです。

しかし、例えば日付と時刻の細かい時間の断片を取得するなど、他の理由でNSDateクラスのカスタム化する場合もあります。

メソッドのオーバーライド

プライベートまたはパブリックな、動作の異なるNSDateのサブクラスを作る場合、以下の事を行う必要があります。

・(絶対参照日に関連付けした)日付と時刻の値を保持に適したインスタンス変数の宣言。

・正しい日付と時刻の値に基づいたインスタンス変数を提供する、timeIntervalSinceReferenceDateインスタンスメソッドのオーバーライド。

initWithTimeIntervalSinceReferenceDate:をオーバーライドした、指定された初期化メソッド。

暦のシステムを表すサブクラスを生成する場合、この暦の単位に分割した過去と未来の期間のメソッドを定義する必要があります。

何故なら、NSDateクラスはNSCopyingとNSCodingのプロトコルを採用しており、サブクラスはこれらのプロトコルを全てのメソッドで実装する必要があるためです。


特別な考慮事項

サブクラスはNSDateの使う絶対参照日(2001年1月1日 GMT)と異なる参照日を使う事ができます。

その場合はメソッドを実装する際に、timeIntervalSinceReferenceDateinitWithTimeIntervalSinceReferenceDate:を使って絶対参照日を設定します。

この参照日は、メソッドのタイトルの中で参照できる絶対参照日です。

これらのメソッド内で絶対参照日を使用しない場合、生成したサブクラスのNSDateオブジェクトとプライベートサブクラスのNSDateオブジェクトの比較は動作しません。



●タスク

●日付オブジェクトの生成と初期化

+ date
+ dateWithTimeIntervalSinceNow:
+ dateWithTimeInterval:sinceDate:
+ dateWithTimeIntervalSinceReferenceDate:
+ dateWithTimeIntervalSince1970:
– init
– initWithTimeIntervalSinceNow:
– initWithTimeInterval:sinceDate:
– initWithTimeIntervalSinceReferenceDate:
– initWithTimeIntervalSince1970:

●時間の境界の取得

+ distantFuture
+ distantPast

●日付の比較

– isEqualToDate:
– earlierDate:
– laterDate:
– compare:

●時間間隔の取得

– timeIntervalSinceDate:
– timeIntervalSinceNow
+ timeIntervalSinceReferenceDate
– timeIntervalSinceReferenceDate
– timeIntervalSince1970

●時間間隔の追加

– dateByAddingTimeInterval:
– addTimeInterval:

●文字列としての日付の表現

– description
– descriptionWithLocale:



●クラスメソッド

date

+ (id)date

現在の日付と時間の新しい日付セットを生成して返します。

このメソッドはデフォルトの初期化メソッドとして、このクラスのinitを使用します。

以下にdateメソッドを使用した、現在時刻を取得するサンプルコードを示します。

NSDate *today = [NSDate date];


dateWithTimeIntervalSince1970:

+ (id)dateWithTimeIntervalSince1970:(NSTimeInterval)seconds

リファレンス(1970年1月1日0時0分0秒(GMT))に指定した秒数を加えたNSDateオブジェクトセットを作成し、返します。

このメソッドは、BSDシステムから返されるtime_t値からNSDateオブジェクトを作成する際に役立ちます。

seconds:リファレンスの日時に加える秒数を指定します。
現在の日時より以前の日時を得る場合は、負の値を指定します。


dateWithTimeIntervalSinceNow:

+ (id)dateWithTimeIntervalSinceNow:(NSTimeInterval)seconds

現在の日時に指定した秒数を加えたNSDateオブジェクトセットを作成し、返します。

seconds:現在の日時に加える秒数を指定します。
現在の日時より以前の日時を得る場合は、負の値を指定します。


timeIntervalSinceReferenceDate

+ (NSTimeInterval)timeIntervalSinceReferenceDate

2001年1月1日 GMTから現在までの経過秒数を返します。

戻り値は現在の日時とシステムの絶対参照日(2001年1月1日 GMT)との期間です。

このメソッドはNSDateの基本メソッドです。

NSDateをサブクラス化する際は、このメソッドをオーバーライドして独自の実装をしてください。



●インスタンスメソッド

timeIntervalSinceReferenceDate

- (NSTimeInterval)timeIntervalSinceReferenceDate

2001年1月1日 GMTからレシーバまでの経過秒数を返します。

戻り値はレシーバとシステムの絶対参照日(2001年1月1日 GMT)との期間です。

レシーバが絶対参照日以前の場合、戻り値は負になります。



●定数



●通知



参考文献

NSDate Class Reference






Bose SoundSport wireless headphones
0 Comments
Leave a comment
管理者にだけ表示を許可する
Top
0 Trackbacks
Top
Calendar
02 | 2017/03 | 03
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 31 -
Recent Articles
iTunes


Swift
Categories
Tips
WACOM


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
BOSE

Bose SoundSport wireless headphones
ARC
Technical Q&A
情報プロパティリストキー
Start Developing iOS Apps Today
SQLite
OpenGL ES
Amazon


Monthly Archives
Recent Comments
Recent TrackBacks
RSS Link
Profile

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

QR Code
QR
Visitors