diff --git a/libavutil/parseutils.c b/libavutil/parseutils.c index 8dc583c898..6e50d70657 100644 --- a/libavutil/parseutils.c +++ b/libavutil/parseutils.c @@ -781,6 +781,35 @@ int main(void) } } + printf("\nTesting av_small_strptime()\n"); + { + int i; + struct tm tm = { 0 }; + struct fmt_timespec_entry { + const char *fmt, *timespec; + } fmt_timespec_entries[] = { + { "%Y-%m-%d", "2012-12-21" }, + { "%Y - %m - %d", "2012-12-21" }, + { "%Y-%m-%d %H:%M:%S", "2012-12-21 20:12:21" }, + { " %Y - %m - %d %H : %M : %S", " 2012 - 12 - 21 20 : 12 : 21" }, + }; + + av_log_set_level(AV_LOG_DEBUG); + for (i = 0; i < FF_ARRAY_ELEMS(fmt_timespec_entries); i++) { + char *p; + struct fmt_timespec_entry *e = &fmt_timespec_entries[i]; + printf("fmt:'%s' spec:'%s' -> ", e->fmt, e->timespec); + p = av_small_strptime(e->timespec, e->fmt, &tm); + if (p) { + printf("%04d-%02d-%2d %02d:%02d:%02d\n", + 1900+tm.tm_year, tm.tm_mon+1, tm.tm_mday, + tm.tm_hour, tm.tm_min, tm.tm_sec); + } else { + printf("error\n"); + } + } + } + printf("\nTesting av_parse_time()\n"); { int i; diff --git a/tests/ref/fate/parseutils b/tests/ref/fate/parseutils index 042ebef938..5bf1cae9c0 100644 --- a/tests/ref/fate/parseutils +++ b/tests/ref/fate/parseutils @@ -63,6 +63,12 @@ red@10foo -> error red@-1.0 -> error red@-0.0 -> R(255) G(0) B(0) A(0) +Testing av_small_strptime() +fmt:'%Y-%m-%d' spec:'2012-12-21' -> 2012-12-21 00:00:00 +fmt:'%Y - %m - %d' spec:'2012-12-21' -> 2012-12-21 00:00:00 +fmt:'%Y-%m-%d %H:%M:%S' spec:'2012-12-21 20:12:21' -> 2012-12-21 20:12:21 +fmt:' %Y - %m - %d %H : %M : %S' spec:' 2012 - 12 - 21 20 : 12 : 21' -> 2012-12-21 20:12:21 + Testing av_parse_time() (now is 2012-03-17 09:14:13 +0100, local time is UTC+1) now -> 1331972053.000000 = 2012-03-17T08:14:13Z