хорошо, вот программа на C, которая может работать.он (слегка) протестирован на Solaris.
использует стандартную функцию POSIX strptime (3) для анализа заданной строки и печатает результат в секундах эпохи.
ввызов теории должен быть
$ ./strptime "Mon Feb 27 16:21:34 WET 2012" "%a %b %e %H:%M:%S %Z %Y"
, но я не смог заставить его распознавать часовой пояс "WET", поэтому вам, возможно, нужно просто указать это как литерал:
$ ./strptime "Mon Feb 27 16:21:34 WET 2012" "%a %b %e %H:%M:%S WET %Y"
1330377694
вот код:
#define _GNU_SOURCE
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
#include <errno.h>
#include <time.h>
#define ARGS 3
#define USAGE printf("Usage: %s string format\n",argv[0]);
#define EARGS { printf("%s: %s arguments (%d)\n",argv[0],argc<ARGS?"Insufficient":"Too many",argc-1); USAGE; exit(2); }
#define err(_s,_p,_f) {fprintf(stderr,"%s: %s: %s\n",(_p),(_f),strerror(errno));exit(_s);}
int main(int argc,char**argv){
struct tm tm;
time_t t;
if(argc!=ARGS)EARGS;
strptime(argv[1],argv[2],&tm);
if(-1==(t=mktime(&tm)))err(1,argv[0],"mktime");
if(0>printf("%lld\n",(long long)t))err(1,argv[0],"printf");
return 0;
}
скомпилируйте что-нибудь в соответствии с
$ CFLAGS='-W -Wall -Wshadow -std=gnu99' make strptime
(вероятно, требуется gcc, не знаю, будет ли работать здесь sun cc)