Ignore:
Timestamp:
Nov 8, 2002, 11:46:17 PM (23 years ago)
Author:
darin
Message:
  • kjs/date_object.cpp: (ctimeUsingCF): Added. (timeUsingCF): Added.
File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/JavaScriptCore/kjs/date_object.cpp

    r2596 r2612  
    6565#include <CoreFoundation/CoreFoundation.h>
    6666
     67#define ctime(x) ctimeUsingCF(x)
    6768#define gmtime(x) gmtimeUsingCF(x)
    6869#define localtime(x) localtimeUsingCF(x)
    6970#define mktime(x) mktimeUsingCF(x)
    70 
    71 struct tm *tmUsingCF(time_t tv, CFTimeZoneRef timeZone)
     71//#define strftime(a, b, c, d) notAllowedToCall()
     72
     73struct tm *tmUsingCF(time_t clock, CFTimeZoneRef timeZone)
    7274{
    7375    static struct tm result;
    7476    static char timeZoneCString[128];
    7577   
    76     CFAbsoluteTime absoluteTime = tv - kCFAbsoluteTimeIntervalSince1970;
    77    
     78    CFAbsoluteTime absoluteTime = clock - kCFAbsoluteTimeIntervalSince1970;
    7879    CFGregorianDate date = CFAbsoluteTimeGetGregorianDate(absoluteTime, timeZone);
    79    
     80
    8081    CFStringRef abbreviation = CFTimeZoneCopyAbbreviation(timeZone, absoluteTime);
    81    
    8282    CFStringGetCString(abbreviation, timeZoneCString, sizeof(timeZoneCString), kCFStringEncodingASCII);
     83    CFRelease(abbreviation);
    8384
    8485    result.tm_sec = (int)date.second;
     
    9495    result.tm_zone = timeZoneCString;
    9596   
    96     CFRelease(abbreviation);
     97    return &result;
     98}
     99
     100char *ctimeUsingCF(const time_t *clock)
     101{
     102    static char result[26];
    97103   
    98     return &result;
    99 }
    100 
    101 struct tm *gmtimeUsingCF(const time_t *tv)
     104    CFTimeZoneRef timeZone = CFTimeZoneCopyDefault();
     105
     106    CFAbsoluteTime absoluteTime = *clock - kCFAbsoluteTimeIntervalSince1970;
     107    CFGregorianDate date = CFAbsoluteTimeGetGregorianDate(absoluteTime, timeZone);
     108   
     109    const char * const weekdayName[7] = { "Mon", "Tue", "Wed", "Thu", "Fri", "Sat", "Sun" };
     110    const char * const monthName[12] = { "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec" };
     111   
     112    sprintf(result, "%s %s %02d %02d:%02d:%02.f %04ld\n",
     113        weekdayName[CFAbsoluteTimeGetDayOfWeek(absoluteTime, timeZone) - 1],
     114        monthName[date.month - 1], date.day, date.hour, date.minute, date.second, date.year);
     115   
     116    CFRelease(timeZone);
     117   
     118    return result;
     119}
     120
     121struct tm *gmtimeUsingCF(const time_t *clock)
    102122{
    103123    static CFTimeZoneRef timeZoneUTC = CFTimeZoneCreateWithName(NULL, CFSTR("UTC"), TRUE);
    104     return tmUsingCF(*tv, timeZoneUTC);
    105 }
    106 
    107 struct tm *localtimeUsingCF(const time_t *tv)
     124    return tmUsingCF(*clock, timeZoneUTC);
     125}
     126
     127struct tm *localtimeUsingCF(const time_t *clock)
    108128{
    109129    CFTimeZoneRef timeZone = CFTimeZoneCopyDefault();
    110     struct tm *result = tmUsingCF(*tv, timeZone);
     130    struct tm *result = tmUsingCF(*clock, timeZone);
    111131    CFRelease(timeZone);
    112132    return result;
     
    130150
    131151    return (time_t)(absoluteTime + kCFAbsoluteTimeIntervalSince1970);
     152}
     153
     154time_t timeUsingCF(time_t *clock)
     155{
     156    time_t result = (time_t)(CFAbsoluteTimeGetCurrent() + kCFAbsoluteTimeIntervalSince1970);
     157    if (clock) {
     158        *clock = result;
     159    }
     160    return result;
    132161}
    133162
Note: See TracChangeset for help on using the changeset viewer.