int findFirstOfNextMonth(int days){ int newDays = days; int currentMonth = getMonths(convertDaysToSeconds(days)); do{ newDays++; }while(getMonths(convertDaysToSeconds(newDays)) == currentMonth); return newDays; }
/*------------------------------------------------------------------------*/ static char *ASCIItime(const struct tm *timeptr) { char **wday_name = getDays(); char **mon_name = getMonths(); char *result = NULL; if ((wday_name) && (mon_name)) { #define FORMAT_TIME "%s %s%3d %.2d:%.2d:%.2d %d" int len_result = (int)strlen(wday_name[timeptr->tm_wday]) + (int)strlen(mon_name[timeptr->tm_mon]) + (int)strlen(FORMAT_TIME); result = (char *)MALLOC(sizeof(char) * (len_result + 1)); if (result) { sprintf(result, FORMAT_TIME, wday_name[timeptr->tm_wday], mon_name[timeptr->tm_mon], timeptr->tm_mday, timeptr->tm_hour, timeptr->tm_min, timeptr->tm_sec, 1900 + timeptr->tm_year); } } else { strcpy(result, ""); } /* free pointers */ freeArrayOfString(wday_name, MAX_wday); freeArrayOfString(mon_name, MAX_mon); return result; }
Period *Period::normalizedStandard(const PeriodType *type) { type = DateTimeUtils::getPeriodType(type); int64_t millis = getMillis(); // no overflow can happen, even with Integer.MAX_VALUEs millis += (((int64_t) getSeconds()) * ((int64_t) DateTimeConstants::MILLIS_PER_SECOND)); millis += (((int64_t) getMinutes()) * ((int64_t) DateTimeConstants::MILLIS_PER_MINUTE)); millis += (((int64_t) getHours()) * ((int64_t) DateTimeConstants::MILLIS_PER_HOUR)); millis += (((int64_t) getDays()) * ((int64_t) DateTimeConstants::MILLIS_PER_DAY)); millis += (((int64_t) getWeeks()) * ((int64_t) DateTimeConstants::MILLIS_PER_WEEK)); Period *result = new Period(millis, type, ISOChronology::getInstanceUTC()); int years = getYears(); int months = getMonths(); if (years != 0 || months != 0) { int64_t totalMonths = years * 12L + months; if (type->isSupported(DurationFieldType::YEARS_TYPE)) { int normalizedYears = FieldUtils::safeToInt(totalMonths / 12); result = result->withYears(normalizedYears); totalMonths = totalMonths - (normalizedYears * 12); } if (type->isSupported(DurationFieldType::MONTHS_TYPE)) { int normalizedMonths = FieldUtils::safeToInt(totalMonths); result = result->withMonths(normalizedMonths); totalMonths = totalMonths - normalizedMonths; } if (totalMonths != 0) { string err("Unable to normalize as PeriodType is missing either years or months but period has a month/year amount: "); err.append(toString()); throw UnsupportedOperationException(err); } } return result; }
void FuturesData::getCurrentContract (QDateTime &dt, QString &cont) { cont = symbol; bool yearFlag = FALSE; QStringList ml; getMonthList(ml); QStringList fml; getMonths(fml); int currentMonth = dt.date().month() - 1; int i = ml.findIndex(fml[currentMonth]); if (i != -1) { currentMonth++; if (currentMonth == 12) { yearFlag = TRUE; currentMonth = 0; } } if (! symbol.compare("CL") || ! symbol.compare("HO") || ! symbol.compare("HU") || ! symbol.compare("NG")) { currentMonth++; if (currentMonth == 12) { yearFlag = TRUE; currentMonth = 0; } } while (1) { QString s = fml[currentMonth]; int i = ml.findIndex(s); if (i != -1) { if (yearFlag) cont.append(QString::number(dt.date().year() + 1)); else cont.append(QString::number(dt.date().year())); cont.append(fml[currentMonth]); break; } else { currentMonth++; if (currentMonth == 12) { yearFlag = TRUE; currentMonth = 0; } } } }
void Period::checkYearsAndMonths(string destintionType) { if (getMonths() != 0) { string err("Cannot convert to "); err.append(destintionType); err.append(" as this period contains months and months vary in.size()"); throw UnsupportedOperationException(err); } if (getYears() != 0) { string err("Cannot convert to "); err.append(destintionType); err.append(" as this period contains years and years vary in.size()"); throw UnsupportedOperationException(err); } }
String DateInterval::format(CStrRef format_spec) { StringBuffer s; for(int i = 0; i < format_spec.length(); i++) { const int MAXLEN = 22; // 64bit signed int string length, plus terminating \0 char buf[MAXLEN]; int l; char c = format_spec.charAt(i); if (c != '%') { s.append(c); continue; } i++; if (i == format_spec.length()) { // End of format, use literal % and finish s.append(c); break; } c = format_spec.charAt(i); switch(c) { case 'Y': l = snprintf(buf, MAXLEN, "%02lld", getYears()); break; case 'y': l = snprintf(buf, MAXLEN, "%lld", getYears()); break; case 'M': l = snprintf(buf, MAXLEN, "%02lld", getMonths()); break; case 'm': l = snprintf(buf, MAXLEN, "%lld", getMonths()); break; case 'D': l = snprintf(buf, MAXLEN, "%02lld", getDays()); break; case 'd': l = snprintf(buf, MAXLEN, "%lld", getDays()); break; case 'H': l = snprintf(buf, MAXLEN, "%02lld", getHours()); break; case 'h': l = snprintf(buf, MAXLEN, "%lld", getHours()); break; case 'I': l = snprintf(buf, MAXLEN, "%02lld", getMinutes()); break; case 'i': l = snprintf(buf, MAXLEN, "%lld", getMinutes()); break; case 'S': l = snprintf(buf, MAXLEN, "%02lld", getSeconds()); break; case 's': l = snprintf(buf, MAXLEN, "%lld", getSeconds()); break; case 'a': if (haveTotalDays()) { l = snprintf(buf, MAXLEN, "%lld", getTotalDays()); } else { l = snprintf(buf, MAXLEN, "(unknown)"); } break; case 'R': l = snprintf(buf, MAXLEN, "%c", isInverted() ? '-' : '+'); break; case 'r': l = snprintf(buf, MAXLEN, "%s", isInverted() ? "-" : ""); break; case '%': default: l = 0; s.append('%'); break; } if (l > 0) { s.append(buf, l); } } return s.detach(); }
int getCurrentMonth(int days){ int month = getMonths(convertDaysToSeconds(days))%12; return month; }
int getYears(int sec){ int years = getMonths(sec)/12; return years; }