Exemplo n.º 1
0
static SQInteger _system_date(HSQUIRRELVM v)
{
    time_t t;
    SQInteger it;
    SQInteger format = 'l';
    if(sq_gettop(v) > 1) {
        sq_getinteger(v,2,&it);
        t = it;
        if(sq_gettop(v) > 2) {
            sq_getinteger(v,3,(SQInteger*)&format);
        }
    }
    else {
        time(&t);
    }
    tm *date;
    if(format == 'u')
        date = gmtime(&t);
    else
        date = localtime(&t);
    if(!date)
        return sq_throwerror(v,_SC("crt api failure"));
    sq_newtable(v);
    _set_integer_slot(v, _SC("sec"), date->tm_sec);
    _set_integer_slot(v, _SC("min"), date->tm_min);
    _set_integer_slot(v, _SC("hour"), date->tm_hour);
    _set_integer_slot(v, _SC("day"), date->tm_mday);
    _set_integer_slot(v, _SC("month"), date->tm_mon);
    _set_integer_slot(v, _SC("year"), date->tm_year+1900);
    _set_integer_slot(v, _SC("wday"), date->tm_wday);
    _set_integer_slot(v, _SC("yday"), date->tm_yday);
    return 1;
}
Exemplo n.º 2
0
SQInteger CSystemNatives::Date(SQVM * pVM)
{
	time_t t;
	SQInteger it;
	SQInteger format = 'l';

	if(sq_gettop(pVM) > 1)
	{
		sq_getinteger(pVM,2,&it);
		t = it;

		if(sq_gettop(pVM) > 2)
			sq_getinteger(pVM, 3, (SQInteger*)&format);
	}
	else
		time(&t);

	tm *date;

	if(format == 'u')
		date = gmtime(&t);
	else
		date = localtime(&t);

	if(!date)
		return sq_throwerror(pVM, "crt api failure");

	sq_newtable(pVM);
	_set_integer_slot(pVM, _SC("sec"), date->tm_sec);
	_set_integer_slot(pVM, _SC("min"), date->tm_min);
	_set_integer_slot(pVM, _SC("hour"), date->tm_hour);
	_set_integer_slot(pVM, _SC("day"), date->tm_mday);
	_set_integer_slot(pVM, _SC("month"), date->tm_mon);
	_set_integer_slot(pVM, _SC("year"), date->tm_year+1900);
	_set_integer_slot(pVM, _SC("wday"), date->tm_wday);
	_set_integer_slot(pVM, _SC("yday"), date->tm_yday);
	return 1;
}