comparison src/c/urweb.c @ 1971:1e360ea06a09

Add basic year/month/day/hour/minute/second <-> time functions.
author Patrick Hurst <phurst@mit.edu>
date Thu, 05 Dec 2013 11:36:06 -0500
parents 2f33d9a51765
children 155bd0bc4d28
comparison
equal deleted inserted replaced
1920:2f33d9a51765 1971:1e360ea06a09
3849 3849
3850 uw_Basis_int uw_Basis_toSeconds(uw_context ctx, uw_Basis_time tm) { 3850 uw_Basis_int uw_Basis_toSeconds(uw_context ctx, uw_Basis_time tm) {
3851 return tm.seconds; 3851 return tm.seconds;
3852 } 3852 }
3853 3853
3854 uw_Basis_time uw_Basis_fromDatetime(uw_context ctx, uw_Basis_int year, uw_Basis_int month, uw_Basis_int day, uw_Basis_int hour, uw_Basis_int minute, uw_Basis_int second) {
3855 struct tm tm = { .tm_year = year - 1900, .tm_mon = month, .tm_mday = day,
3856 .tm_hour = hour, .tm_min = minute, .tm_sec = second };
3857 uw_Basis_time r = { timegm(&tm) };
3858 return r;
3859 }
3860
3861 uw_Basis_int uw_Basis_datetimeYear(uw_context ctx, uw_Basis_time time) {
3862 struct tm tm;
3863 gmtime_r(&time.seconds, &tm);
3864 return tm.tm_year + 1900;
3865 }
3866
3867 uw_Basis_int uw_Basis_datetimeMonth(uw_context ctx, uw_Basis_time time) {
3868 struct tm tm;
3869 gmtime_r(&time.seconds, &tm);
3870 return tm.tm_mon;
3871 }
3872
3873 uw_Basis_int uw_Basis_datetimeDay(uw_context ctx, uw_Basis_time time) {
3874 struct tm tm;
3875 gmtime_r(&time.seconds, &tm);
3876 return tm.tm_mday;
3877 }
3878
3879 uw_Basis_int uw_Basis_datetimeHour(uw_context ctx, uw_Basis_time time) {
3880 struct tm tm;
3881 gmtime_r(&time.seconds, &tm);
3882 return tm.tm_hour;
3883 }
3884
3885 uw_Basis_int uw_Basis_datetimeMinute(uw_context ctx, uw_Basis_time time) {
3886 struct tm tm;
3887 gmtime_r(&time.seconds, &tm);
3888 return tm.tm_min;
3889 }
3890
3891 uw_Basis_int uw_Basis_datetimeSecond(uw_context ctx, uw_Basis_time time) {
3892 struct tm tm;
3893 gmtime_r(&time.seconds, &tm);
3894 return tm.tm_sec;
3895 }
3896
3897
3898
3854 void *uw_get_global(uw_context ctx, char *name) { 3899 void *uw_get_global(uw_context ctx, char *name) {
3855 int i; 3900 int i;
3856 3901
3857 for (i = 0; i < ctx->n_globals; ++i) 3902 for (i = 0; i < ctx->n_globals; ++i)
3858 if (!strcmp(name, ctx->globals[i].name)) 3903 if (!strcmp(name, ctx->globals[i].name))