1
0
Fork 0
mirror of https://github.com/ruby/ruby.git synced 2022-11-09 12:17:21 -05:00
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@816 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
matz 2000-07-06 07:21:26 +00:00
parent a60db057a2
commit d1375688cd
18 changed files with 389 additions and 149 deletions

23
time.c
View file

@ -200,12 +200,13 @@ obj2long(obj)
}
static void
time_arg(argc, argv, tm)
time_arg(argc, argv, tm, usec)
int argc;
VALUE *argv;
struct tm *tm;
time_t *usec;
{
VALUE v[6];
VALUE v[7];
int i;
MEMZERO(tm, struct tm, 1);
@ -216,10 +217,12 @@ time_arg(argc, argv, tm)
v[3] = argv[2];
v[4] = argv[1];
v[5] = argv[0];
*usec = 0;
tm->tm_isdst = RTEST(argv[9]) ? 1 : 0;
}
else {
rb_scan_args(argc, argv, "15", &v[0],&v[1],&v[2],&v[3],&v[4],&v[5]);
rb_scan_args(argc, argv, "16", &v[0],&v[1],&v[2],&v[3],&v[4],&v[5],&v[6]);
*usec = (argc == 7) ? NUM2INT(v[6]) : 0;
}
tm->tm_year = obj2long(v[0]);
@ -370,18 +373,19 @@ make_time_t(tptr, utc_or_local)
}
static VALUE
time_utc_or_local(argc, argv, utc_or_local, klass)
time_utc_or_local(argc, argv, utc_p, klass)
int argc;
VALUE *argv;
int utc_or_local;
int utc_p;
VALUE klass;
{
struct tm tm;
VALUE time;
time_t usec;
time_arg(argc, argv, &tm);
time = time_new_internal(klass, make_time_t(&tm, utc_or_local), 0);
if (utc_or_local) return time_gmtime(time);
time_arg(argc, argv, &tm, &usec);
time = time_new_internal(klass, make_time_t(&tm, utc_p), usec);
if (utc_p) return time_gmtime(time);
return time_localtime(time);
}
@ -420,7 +424,7 @@ time_to_f(time)
struct time_object *tobj;
GetTimeval(time, tobj);
return rb_float_new((double)tobj->tv.tv_sec+(double)tobj->tv.tv_usec/1000000);
return rb_float_new((double)tobj->tv.tv_sec+(double)tobj->tv.tv_usec/1e6);
}
static VALUE
@ -1065,6 +1069,7 @@ Init_Time()
rb_define_method(rb_cTime, "localtime", time_localtime, 0);
rb_define_method(rb_cTime, "gmtime", time_gmtime, 0);
rb_define_method(rb_cTime, "utc", time_gmtime, 0);
rb_define_method(rb_cTime, "ctime", time_asctime, 0);
rb_define_method(rb_cTime, "asctime", time_asctime, 0);
rb_define_method(rb_cTime, "to_s", time_to_s, 0);