亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? datemath.cpp

?? linux下開源瀏覽器WebKit的源碼,市面上的很多商用瀏覽器都是移植自WebKit
?? CPP
?? 第 1 頁 / 共 2 頁
字號:
        result -= getDSTOffset(result, utcOffset);    }    return result;}void msToGregorianDateTime(double ms, bool outputIsUTC, GregorianDateTime& tm){    // input is UTC    double dstOff = 0.0;    const double utcOff = getUTCOffset();    if (!outputIsUTC) {  // convert to local time        dstOff = getDSTOffset(ms, utcOff);        ms += dstOff + utcOff;    }    const int year = msToYear(ms);    tm.second   =  msToSeconds(ms);    tm.minute   =  msToMinutes(ms);    tm.hour     =  msToHours(ms);    tm.weekDay  =  msToWeekDay(ms);    tm.yearDay  =  dayInYear(ms, year);    tm.monthDay =  dayInMonthFromDayInYear(tm.yearDay, isLeapYear(year));    tm.month    =  monthFromDayInYear(tm.yearDay, isLeapYear(year));    tm.year     =  year - 1900;    tm.isDST    =  dstOff != 0.0;    tm.utcOffset = static_cast<long>((dstOff + utcOff) / msPerSecond);    tm.timeZone = NULL;}void initDateMath(){#ifndef NDEBUG    static bool alreadyInitialized;    ASSERT(!alreadyInitialized++);#endif    equivalentYearForDST(2000); // Need to call once to initialize a static used in this function.#if PLATFORM(DARWIN)    // Register for a notification whenever the time zone changes.    uint32_t status = notify_register_check("com.apple.system.timezone", &s_notificationToken);    if (status == NOTIFY_STATUS_OK) {        s_cachedUTCOffset = calculateUTCOffset();        s_haveCachedUTCOffset = true;    }#endif}static inline double ymdhmsToSeconds(long year, int mon, int day, int hour, int minute, int second){    double days = (day - 32075)        + floor(1461 * (year + 4800.0 + (mon - 14) / 12) / 4)        + 367 * (mon - 2 - (mon - 14) / 12 * 12) / 12        - floor(3 * ((year + 4900.0 + (mon - 14) / 12) / 100) / 4)        - 2440588;    return ((days * hoursPerDay + hour) * minutesPerHour + minute) * secondsPerMinute + second;}// We follow the recommendation of RFC 2822 to consider all// obsolete time zones not listed here equivalent to "-0000".static const struct KnownZone {#if !PLATFORM(WIN_OS)    const#endif        char tzName[4];    int tzOffset;} known_zones[] = {    { "UT", 0 },    { "GMT", 0 },    { "EST", -300 },    { "EDT", -240 },    { "CST", -360 },    { "CDT", -300 },    { "MST", -420 },    { "MDT", -360 },    { "PST", -480 },    { "PDT", -420 }};inline static void skipSpacesAndComments(const char*& s){    int nesting = 0;    char ch;    while ((ch = *s)) {        if (!isASCIISpace(ch)) {            if (ch == '(')                nesting++;            else if (ch == ')' && nesting > 0)                nesting--;            else if (nesting == 0)                break;        }        s++;    }}// returns 0-11 (Jan-Dec); -1 on failurestatic int findMonth(const char* monthStr){    ASSERT(monthStr);    char needle[4];    for (int i = 0; i < 3; ++i) {        if (!*monthStr)            return -1;        needle[i] = static_cast<char>(toASCIILower(*monthStr++));    }    needle[3] = '\0';    const char *haystack = "janfebmaraprmayjunjulaugsepoctnovdec";    const char *str = strstr(haystack, needle);    if (str) {        int position = static_cast<int>(str - haystack);        if (position % 3 == 0)            return position / 3;    }    return -1;}static bool parseLong(const char* string, char** stopPosition, int base, long* result){    *result = strtol(string, stopPosition, base);    // Avoid the use of errno as it is not available on Windows CE    if (string == *stopPosition || *result == LONG_MIN || *result == LONG_MAX)        return false;    return true;}double parseDate(const UString &date){    // This parses a date in the form:    //     Tuesday, 09-Nov-99 23:12:40 GMT    // or    //     Sat, 01-Jan-2000 08:00:00 GMT    // or    //     Sat, 01 Jan 2000 08:00:00 GMT    // or    //     01 Jan 99 22:00 +0100    (exceptions in rfc822/rfc2822)    // ### non RFC formats, added for Javascript:    //     [Wednesday] January 09 1999 23:12:40 GMT    //     [Wednesday] January 09 23:12:40 GMT 1999    //    // We ignore the weekday.    CString dateCString = date.UTF8String();    const char *dateString = dateCString.c_str();         // Skip leading space    skipSpacesAndComments(dateString);    long month = -1;    const char *wordStart = dateString;    // Check contents of first words if not number    while (*dateString && !isASCIIDigit(*dateString)) {        if (isASCIISpace(*dateString) || *dateString == '(') {            if (dateString - wordStart >= 3)                month = findMonth(wordStart);            skipSpacesAndComments(dateString);            wordStart = dateString;        } else           dateString++;    }    // Missing delimiter between month and day (like "January29")?    if (month == -1 && wordStart != dateString)        month = findMonth(wordStart);    skipSpacesAndComments(dateString);    if (!*dateString)        return NaN;    // ' 09-Nov-99 23:12:40 GMT'    char* newPosStr;    long day;    if (!parseLong(dateString, &newPosStr, 10, &day))        return NaN;    dateString = newPosStr;    if (!*dateString)        return NaN;    if (day < 0)        return NaN;    long year = 0;    if (day > 31) {        // ### where is the boundary and what happens below?        if (*dateString != '/')            return NaN;        // looks like a YYYY/MM/DD date        if (!*++dateString)            return NaN;        year = day;        if (!parseLong(dateString, &newPosStr, 10, &month))            return NaN;        month -= 1;        dateString = newPosStr;        if (*dateString++ != '/' || !*dateString)            return NaN;        if (!parseLong(dateString, &newPosStr, 10, &day))            return NaN;        dateString = newPosStr;    } else if (*dateString == '/' && month == -1) {        dateString++;        // This looks like a MM/DD/YYYY date, not an RFC date.        month = day - 1; // 0-based        if (!parseLong(dateString, &newPosStr, 10, &day))            return NaN;        if (day < 1 || day > 31)            return NaN;        dateString = newPosStr;        if (*dateString == '/')            dateString++;        if (!*dateString)            return NaN;     } else {        if (*dateString == '-')            dateString++;        skipSpacesAndComments(dateString);        if (*dateString == ',')            dateString++;        if (month == -1) { // not found yet            month = findMonth(dateString);            if (month == -1)                return NaN;            while (*dateString && *dateString != '-' && *dateString != ',' && !isASCIISpace(*dateString))                dateString++;            if (!*dateString)                return NaN;            // '-99 23:12:40 GMT'            if (*dateString != '-' && *dateString != '/' && *dateString != ',' && !isASCIISpace(*dateString))                return NaN;            dateString++;        }    }    if (month < 0 || month > 11)        return NaN;    // '99 23:12:40 GMT'    if (year <= 0 && *dateString) {        if (!parseLong(dateString, &newPosStr, 10, &year))            return NaN;    }        // Don't fail if the time is missing.    long hour = 0;    long minute = 0;    long second = 0;    if (!*newPosStr)        dateString = newPosStr;    else {        // ' 23:12:40 GMT'        if (!(isASCIISpace(*newPosStr) || *newPosStr == ',')) {            if (*newPosStr != ':')                return NaN;            // There was no year; the number was the hour.            year = -1;        } else {            // in the normal case (we parsed the year), advance to the next number            dateString = ++newPosStr;            skipSpacesAndComments(dateString);        }        parseLong(dateString, &newPosStr, 10, &hour);        // Do not check for errno here since we want to continue        // even if errno was set becasue we are still looking        // for the timezone!        // Read a number? If not, this might be a timezone name.        if (newPosStr != dateString) {            dateString = newPosStr;            if (hour < 0 || hour > 23)                return NaN;            if (!*dateString)                return NaN;            // ':12:40 GMT'            if (*dateString++ != ':')                return NaN;            if (!parseLong(dateString, &newPosStr, 10, &minute))                return NaN;            dateString = newPosStr;            if (minute < 0 || minute > 59)                return NaN;            // ':40 GMT'            if (*dateString && *dateString != ':' && !isASCIISpace(*dateString))                return NaN;            // seconds are optional in rfc822 + rfc2822            if (*dateString ==':') {                dateString++;                if (!parseLong(dateString, &newPosStr, 10, &second))                    return NaN;                dateString = newPosStr;                            if (second < 0 || second > 59)                    return NaN;            }            skipSpacesAndComments(dateString);            if (strncasecmp(dateString, "AM", 2) == 0) {                if (hour > 12)                    return NaN;                if (hour == 12)                    hour = 0;                dateString += 2;                skipSpacesAndComments(dateString);            } else if (strncasecmp(dateString, "PM", 2) == 0) {                if (hour > 12)                    return NaN;                if (hour != 12)                    hour += 12;                dateString += 2;                skipSpacesAndComments(dateString);            }        }    }    bool haveTZ = false;    int offset = 0;    // Don't fail if the time zone is missing.     // Some websites omit the time zone (4275206).    if (*dateString) {        if (strncasecmp(dateString, "GMT", 3) == 0 || strncasecmp(dateString, "UTC", 3) == 0) {            dateString += 3;            haveTZ = true;        }        if (*dateString == '+' || *dateString == '-') {            long o;            if (!parseLong(dateString, &newPosStr, 10, &o))                return NaN;            dateString = newPosStr;            if (o < -9959 || o > 9959)                return NaN;            int sgn = (o < 0) ? -1 : 1;            o = abs(o);            if (*dateString != ':') {                offset = ((o / 100) * 60 + (o % 100)) * sgn;            } else { // GMT+05:00                long o2;                if (!parseLong(dateString, &newPosStr, 10, &o2))                    return NaN;                dateString = newPosStr;                offset = (o * 60 + o2) * sgn;            }            haveTZ = true;        } else {            for (int i = 0; i < int(sizeof(known_zones) / sizeof(KnownZone)); i++) {                if (0 == strncasecmp(dateString, known_zones[i].tzName, strlen(known_zones[i].tzName))) {                    offset = known_zones[i].tzOffset;                    dateString += strlen(known_zones[i].tzName);                    haveTZ = true;                    break;                }            }        }    }    skipSpacesAndComments(dateString);    if (*dateString && year == -1) {        if (!parseLong(dateString, &newPosStr, 10, &year))            return NaN;        dateString = newPosStr;    }         skipSpacesAndComments(dateString);         // Trailing garbage    if (*dateString)        return NaN;    // Y2K: Handle 2 digit years.    if (year >= 0 && year < 100) {        if (year < 50)            year += 2000;        else            year += 1900;    }    // fall back to local timezone    if (!haveTZ) {        GregorianDateTime t;        t.monthDay = day;        t.month = month;        t.year = year - 1900;        t.isDST = -1;        t.second = second;        t.minute = minute;        t.hour = hour;        // Use our gregorianDateTimeToMS() rather than mktime() as the latter can't handle the full year range.        return gregorianDateTimeToMS(t, 0, false);    }    return (ymdhmsToSeconds(year, month + 1, day, hour, minute, second) - (offset * 60.0)) * msPerSecond;}double timeClip(double t){    if (!isfinite(t))        return NaN;    if (fabs(t) > 8.64E15)        return NaN;    return trunc(t);}UString formatDate(const GregorianDateTime &t){    char buffer[100];    snprintf(buffer, sizeof(buffer), "%s %s %02d %04d",        weekdayName[(t.weekDay + 6) % 7],        monthName[t.month], t.monthDay, t.year + 1900);    return buffer;}UString formatDateUTCVariant(const GregorianDateTime &t){    char buffer[100];    snprintf(buffer, sizeof(buffer), "%s, %02d %s %04d",        weekdayName[(t.weekDay + 6) % 7],        t.monthDay, monthName[t.month], t.year + 1900);    return buffer;}UString formatTime(const GregorianDateTime &t, bool utc){    char buffer[100];    if (utc) {        snprintf(buffer, sizeof(buffer), "%02d:%02d:%02d GMT", t.hour, t.minute, t.second);    } else {        int offset = abs(gmtoffset(t));        char tzname[70];        struct tm gtm = t;        strftime(tzname, sizeof(tzname), "%Z", &gtm);        if (tzname[0]) {            snprintf(buffer, sizeof(buffer), "%02d:%02d:%02d GMT%c%02d%02d (%s)",                t.hour, t.minute, t.second,                gmtoffset(t) < 0 ? '-' : '+', offset / (60*60), (offset / 60) % 60, tzname);        } else {            snprintf(buffer, sizeof(buffer), "%02d:%02d:%02d GMT%c%02d%02d",                t.hour, t.minute, t.second,                gmtoffset(t) < 0 ? '-' : '+', offset / (60*60), (offset / 60) % 60);        }    }    return UString(buffer);}} // namespace JSC

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
另类调教123区| 日韩欧美三级在线| 欧美一区二区高清| 亚洲欧美一区二区三区极速播放 | 国产午夜精品一区二区三区四区| 国产精品美日韩| 久久精品国产一区二区三| 色视频成人在线观看免| 欧美高清在线视频| 久久精品国产一区二区三 | 亚洲第一激情av| 波多野结衣精品在线| 欧美成人三级在线| 日本视频一区二区| 欧美亚洲动漫精品| 亚洲蜜桃精久久久久久久| 成人国产亚洲欧美成人综合网| 欧美成人一级视频| 精品一区二区三区日韩| 色婷婷久久久亚洲一区二区三区 | 国产精品一区2区| 日韩一级大片在线观看| 亚洲一区二区精品视频| 色嗨嗨av一区二区三区| 国产精品久久国产精麻豆99网站| 久久99精品国产麻豆不卡| 欧美一级爆毛片| 日韩av在线播放中文字幕| 欧美久久一区二区| 午夜亚洲福利老司机| 欧美欧美午夜aⅴ在线观看| 亚洲一区二区三区四区在线| 欧美亚洲国产一区二区三区va| 一区二区三区在线高清| 欧美伊人精品成人久久综合97| 亚洲欧美日本在线| 精品视频1区2区| 日韩av电影天堂| 欧美一级久久久| 精品制服美女丁香| 久久久久国产成人精品亚洲午夜| 国产高清不卡一区二区| 国产精品久久久久永久免费观看| 99精品黄色片免费大全| 亚洲综合视频在线观看| 欧美一区日韩一区| 国内成+人亚洲+欧美+综合在线 | 亚洲国产视频在线| 欧美电影在线免费观看| 国内精品自线一区二区三区视频| 久久免费午夜影院| 91免费观看视频| 五月婷婷综合在线| 久久人人爽人人爽| 91理论电影在线观看| 日韩国产在线一| 精品人在线二区三区| 高清shemale亚洲人妖| 亚洲精品久久久蜜桃| 欧美日产在线观看| 精品亚洲aⅴ乱码一区二区三区| 精品处破学生在线二十三| 成人免费高清在线| 日日夜夜免费精品| 国产日韩亚洲欧美综合| 欧美视频一区二区三区在线观看| 免费成人av在线播放| 国产精品美女久久福利网站| 欧美精品黑人性xxxx| 大桥未久av一区二区三区中文| 亚洲一区二区三区美女| 久久免费看少妇高潮| 欧美亚洲免费在线一区| 国产精品一级黄| 日韩专区在线视频| 中文字幕av一区二区三区免费看 | 国产欧美日韩视频在线观看| 欧美色综合影院| 成人91在线观看| 美日韩黄色大片| 一区二区在线看| 欧美国产综合一区二区| 欧美日韩在线亚洲一区蜜芽| 激情欧美一区二区三区在线观看| 欧美性极品少妇| 国产中文字幕一区| 亚洲综合999| 国产精品高潮久久久久无| 精品入口麻豆88视频| 欧美日韩激情一区二区三区| 成人三级伦理片| 国产美女精品在线| 免费xxxx性欧美18vr| 亚洲成人免费av| 亚洲欧洲综合另类在线| 国产精品人成在线观看免费| 日韩美女一区二区三区| 欧美三级视频在线| 色婷婷精品大在线视频| 不卡av电影在线播放| 国产大片一区二区| 国产乱一区二区| 国内成人精品2018免费看| 日韩精品成人一区二区三区| 亚洲国产一二三| 亚洲一区在线视频观看| 一区二区欧美视频| 亚洲欧洲日产国码二区| 中文字幕+乱码+中文字幕一区| 欧美精品一区二区三区高清aⅴ| 欧美一区二区在线免费观看| 欧美午夜理伦三级在线观看| 色香色香欲天天天影视综合网| 99国产精品国产精品毛片| 成人国产亚洲欧美成人综合网| 成人免费毛片嘿嘿连载视频| 国产91露脸合集magnet| 国产成人啪免费观看软件| 国产成人福利片| 成人性色生活片| 91丨porny丨国产| 在线亚洲+欧美+日本专区| 色婷婷久久99综合精品jk白丝| 欧美这里有精品| 欧美日韩在线不卡| 日韩一级片在线观看| 精品国产1区2区3区| 久久夜色精品一区| 欧美经典一区二区| 中文字幕亚洲欧美在线不卡| 日韩理论在线观看| 天天色天天爱天天射综合| 免费成人在线视频观看| 国产高清视频一区| 色婷婷亚洲精品| 欧美一区二区成人6969| 久久理论电影网| 综合久久国产九一剧情麻豆| 亚洲成人动漫一区| 国产一区二区三区精品欧美日韩一区二区三区 | 成人av在线影院| 91国内精品野花午夜精品| 5月丁香婷婷综合| 国产欧美日韩综合| 亚洲成a人在线观看| 久草精品在线观看| 一本色道久久加勒比精品| 91精品国产免费久久综合| 国产精品无码永久免费888| 亚洲大型综合色站| 国产精品亚洲综合一区在线观看| 色婷婷av久久久久久久| 精品国产凹凸成av人网站| 亚洲人吸女人奶水| 久久成人免费电影| 色婷婷国产精品| 久久久久久久一区| 丝袜美腿高跟呻吟高潮一区| 国产99一区视频免费| 欧美日韩激情一区二区| 欧美激情一区二区三区蜜桃视频| 亚洲国产精品麻豆| 国产suv精品一区二区三区| 欧美巨大另类极品videosbest | 亚洲欧美日韩系列| 九九热在线视频观看这里只有精品 | 一本大道av一区二区在线播放 | 欧美理论在线播放| 国产精品视频在线看| 免费人成精品欧美精品| av资源站一区| 久久亚洲综合色一区二区三区| 亚洲一区二区av电影| 国产不卡在线一区| 欧美成人bangbros| 午夜成人免费电影| 在线免费观看成人短视频| 国产精品久久久久久久岛一牛影视| 日本v片在线高清不卡在线观看| 成人丝袜18视频在线观看| 精品88久久久久88久久久| 天堂久久一区二区三区| 91久久人澡人人添人人爽欧美| 国产欧美在线观看一区| 韩国一区二区视频| 精品国产亚洲在线| 日本美女一区二区| 欧美久久一二三四区| 亚洲一区二区av电影| 欧美性做爰猛烈叫床潮| 亚洲另类中文字| 91女人视频在线观看| 综合欧美一区二区三区| av一二三不卡影片| 国产视频一区不卡| 成人黄页在线观看| 国产精品国产三级国产aⅴ原创 | 日本久久一区二区| 国产精品久久久久aaaa| 国产99久久久久久免费看农村|