⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 date.c

📁 Android 一些工具
💻 C
字号:
#include <stdio.h>#include <stdlib.h>#include <fcntl.h>#include <string.h>#include <errno.h>#include <time.h>#include <linux/android_alarm.h>static void settime(char *s) {    struct tm tm;    int day = atoi(s);    int hour;    time_t t;    int fd;    struct timespec ts;    while (*s && *s != '.')        s++;    if (*s)        s++;    hour = atoi(s);    tm.tm_year = day / 10000 - 1900;    tm.tm_mon = (day % 10000) / 100 - 1;    tm.tm_mday = (day % 100);    tm.tm_hour = hour / 10000;    tm.tm_min = (hour % 10000) / 100;    tm.tm_sec = (hour % 100);    tm.tm_isdst = -1;    t = mktime(&tm);        fd = open("/dev/alarm", O_RDWR);    ts.tv_sec = t;    ts.tv_nsec = 0;    ioctl(fd, ANDROID_ALARM_SET_RTC, &ts);}int date_main(int argc, char *argv[]){	int c;    int res;	struct tm tm;	time_t t;	struct timeval tv;    struct timespec ts;	char strbuf[260];    int fd;    int useutc = 0;    tzset();    do {        c = getopt(argc, argv, "us:");        if (c == EOF)            break;        switch (c) {        case 'u':            useutc = 1;            break;        case 's':            settime(optarg);            break;        case '?':            fprintf(stderr, "%s: invalid option -%c\n",                argv[0], optopt);            exit(1);        }    } while (1);    if(optind + 2 < argc) {        fprintf(stderr,"%s [-u] [date]\n", argv[0]);        return 1;    }    int hasfmt = argc == optind + 1 && argv[optind][0] == '+';    if(optind == argc || hasfmt) {        char buf[2000];        time(&t);        if (useutc) {            gmtime_r(&t, &tm);            strftime(strbuf, sizeof(strbuf),                     (hasfmt ? argv[optind] + 1 : "%a %b %e %H:%M:%S GMT %Y"),                     &tm);        } else {            localtime_r(&t, &tm);            strftime(strbuf, sizeof(strbuf),                     (hasfmt ? argv[optind] + 1 : "%a %b %e %H:%M:%S %Z %Y"),                     &tm);        }        printf("%s\n", strbuf);    }    else if(optind + 1 == argc) {#if 0        struct tm *tmptr;        tmptr = getdate(argv[optind]);        if(tmptr == NULL) {            fprintf(stderr,"getdate_r failed\n");            return 1;        }        tm = *tmptr;#if 0        if(getdate_r(argv[optind], &tm) < 0) {            fprintf(stderr,"getdate_r failed %s\n", strerror(errno));            return 1;        }#endif#endif        //strptime(argv[optind], NULL, &tm);        //tv.tv_sec = mktime(&tm);        //tv.tv_usec = 0;        strtotimeval(argv[optind], &tv);        printf("time %s -> %d.%d\n", argv[optind], tv.tv_sec, tv.tv_usec);        fd = open("/dev/alarm", O_RDWR);        ts.tv_sec = tv.tv_sec;        ts.tv_nsec = tv.tv_usec * 1000;        res = ioctl(fd, ANDROID_ALARM_SET_RTC, &ts);        //res = settimeofday(&tv, NULL);        if(res < 0) {            fprintf(stderr,"settimeofday failed %s\n", strerror(errno));            return 1;        }    }    else {        fprintf(stderr,"%s [-s 20070325.123456] [-u] [date]\n", argv[0]);        return 1;    }    return 0;}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -