日付の使用


このタスクには、日付の作成、比較、および変換の例が含まれています。リスト 1 は、現在の絶対時間を取得し、それを CFDate オブジェクトに変換する方法を示しています。


リスト 1 : CFDate オブジェクトの作成


CFAbsoluteTime      absTime;
CFDateRef           aCFDate;
 
absTime = CFAbsoluteTimeGetCurrent();
aCFDate = CFDateCreate(kCFAllocatorDefault, absTime);


2 つの日付を比較するには、リスト 2 に示すように比較関数 CFDateCompare を使用します。


リスト 2 : CFDate オブジェクトの比較


// Standard Core Foundation comparison result.
CFComparisonResult result;
 
// Create two CFDates from absolute time.
date1 = CFDateCreate(kCFAllocatorDefault, CFAbsoluteTimeGetCurrent());
date2 = CFDateCreate(kCFAllocatorDefault, CFAbsoluteTimeGetCurrent());
 
// Pass NULL for the context param.
result = CFDateCompare(date1, date2, NULL);
 
switch (result) {
    case kCFCompareLessThan:
        printf("date1 is before date2!\n");
        break;
    case kCFCompareEqualTo:
        printf("date1 is the same as date2!\n");
        break;
    case kCFCompareGreaterThan:
        printf("date1 is after date2!\n");
        break;
    }


CFDateCompare 関数は厳密な比較を実行します。つまり、日付間のサブ秒の差を検出します。あまり細かい精度で日付を比較したくないかもしれません。たとえば、2 つの日付が互いに 1 分以内であれば、2 つの日付を同じと見なすかも知れません。これは、CFDate を絶対時間に変換し、2 つの浮動小数点値をファジーな要素を使用して比較するだけで実現できます。月または週のようなグレゴリオ暦の単位を比較するには、両方の CFDate を CFGregorianDate に変換し、適切なフィールドを比較できます。絶対時間とグレゴリオ暦の日付との変換は非常に簡単です。リスト 3 は、これを行う方法を示しています。


リスト 3 : グレゴリオ暦の日付を扱う


Boolean             status;
CFGregorianDate     gregDate;
CFAbsoluteTime      absTime;
 
// Construct a Gregorian date.
gregDate.year = 1999;
gregDate.month = 11;
gregDate.day = 23;
gregDate.hour = 17;
gregDate.minute = 33;
gregDate.second = 22.7;
 
// Check the validity of the date.
status = CFGregorianDateIsValid(gregDate, kCFGregorianAllUnits);
printf("Is my Gregorian date valid? %d\n", status);
 
// Convert the Gregorian date to absolute time.
absTime = CFGregorianDateGetAbsoluteTime(gregDate, NULL);
printf("The Absolute Time from a Gregorian date is: %d\n", absTime);


前の章 次の章



目次
Xcode の新機能

  • 序言
  • この文書の対象読者
    この文書の構成
  • 日付の表現
  • CFAbsoluteTime
    CFTimeInterval
    CFGregorianDate
    CFGregorianUnits
    CFDate
    時間帯
    日付の使用
    文書改訂履歴












    トップへ(Copy Foundation)












    トップへ(Copy Foundation)












    トップへ(Copy Foundation)












    トップへ(Copy Foundation)












    トップへ(Copy Foundation)












    トップへ(Copy Foundation)












    トップへ(Copy Foundation)












    トップへ(Copy Foundation)












    トップへ(Copy Foundation)












    トップへ(Copy Foundation)












    トップへ(Copy Foundation)












    トップへ(Copy Foundation)












    トップへ(Copy Foundation)












    トップへ(Copy Foundation)












    トップへ(Copy Foundation)












    トップへ(Copy Foundation)












    トップへ(Copy Foundation)












    トップへ(Copy Foundation)












    トップへ(Copy Foundation)












    トップへ(Copy Foundation)