Example #1
0
const char *StrToDate(const char *fmt, Date& d, const char *s, Date def)
{
	if(*s == 0) {
		d = Null;
		return s;
	}
	d = Nvl(def, GetSysDate());
	while(*fmt) {
		while(*s && !IsDigit(*s) && !IsAlpha(*s) && (byte)*s < 128)
			s++;
		int n;
		if(IsDigit(*s)) {
			char *q;
			n = strtoul(s, &q, 10);
			s = q;
		}
		else
		if(IsAlpha(*s) || (byte)*s >= 128) {
			if(*fmt != 'm')
				return NULL;
			String m;
			while(IsAlpha(*s) || (byte)*s >= 128)
				m.Cat(*s++);
			m = ToUpper(m);
			for(int i = 0; i < 12; i++)
				if(m == ToUpper(MonthName(i)) || m == ToUpper(MonName(i))) {
					n = i + 1;
					goto found;
				}
			return NULL;
		found:
			;
		}
		else
			break;

		switch(*fmt) {
		case 'd':
			if(n < 1 || n > 31)
				return NULL;
			d.day = n;
			break;
		case 'm':
			if(n < 1 || n > 12)
				return NULL;
			d.month = n;
			break;
		case 'y':
			d.year = n;
			if(d.year < 25) d.year += 2000; // Check again in 2020.... // TODO: Make this automatic
			else
			if(d.year < 100) d.year += 1900;
			break;
		default:
			NEVER();
		}
		fmt++;
	}
	return d.IsValid() ? s : NULL;
}
Example #2
0
void MonthTest(void)
{
    int month;

    for (month = 1; month <= 12; month++) {
        printf("%-10s %2d\n", MonthName(month), MonthDays(month, 1996));
    }
}
Example #3
0
void Insert() {
    TimePass::ShmMultihashmap<MonthName, int> months(SHM_FILE);
    if (false == months.Open()) {
        printf("errmsg = %s\n", TimePass::Error::GetLastErrmsg().c_str());
        return;
    }
    for (int i = 0; i < 12; ++i) {
        months.Insert(SHM_PAIR(MonthName(t_month[i]), n_month[i]));
    }
}
Example #4
0
void Remove() {
    TimePass::ShmMultihashmap<MonthName, int> months(SHM_FILE);
    if (false == months.Open()) {
        printf("errmsg = %s\n", TimePass::Error::GetLastErrmsg().c_str());
        return;
    }
    char name[10];
    for (int i = 0; i < len; ++i) {
        months.Remove(MonthName(t_month[i]));
        snprintf(name, sizeof(name) - 1, "%02d", i);
        ToDotPs(name, &months);
    }
}
Example #5
0
void PrintCalendarMonth(int month, int year)
{
    int weekday, nDays, day;

    printf("    %s %d\n", MonthName(month), year);
    printf(" Su Mo Tu We Th Fr Sa\n");
    nDays = MonthDays(month, year);
    weekday = FirstDayOfMonth(month, year);
    IndentFirstLine(weekday);
    for (day = 1; day <= nDays; day++) {
        printf(" %2d", day);
        if (weekday == Saturday) printf("\n");
        weekday = (weekday + 1) % 7;
    }
    if (weekday != Sunday) printf("\n");
}
Example #6
0
CString CLocale::MonthName(MONTH Month)
{
	TCHAR Buf[MAX_MONTHNAME];
	MonthName(Month, Buf, MAX_MONTHNAME);
	return (CString(Buf));
}