diff --git a/src/core/ngx_core.h b/src/core/ngx_core.h
index 1db2e41..7a19d1b 100644
--- a/src/core/ngx_core.h
+++ b/src/core/ngx_core.h
@@ -27,6 +27,7 @@
 #include <ngx_table.h>
 #include <ngx_file.h>
 #include <ngx_files.h>
+#include <ngx_times.h>
 #include <ngx_inet.h>
 #include <ngx_conf_file.h>
 #include <ngx_os_init.h>
diff --git a/src/core/ngx_times.c b/src/core/ngx_times.c
new file mode 100644
index 0000000..423e4cd
--- /dev/null
+++ b/src/core/ngx_times.c
@@ -0,0 +1,51 @@
+
+#include <ngx_config.h>
+#include <ngx_core.h>
+
+
+time_t       ngx_cached_time;
+
+static char  cached_http_time[] = "Mon, 28 Sep 1970 06:00:00 GMT";
+ngx_str_t    ngx_cached_http_time;
+
+static char  cached_http_log_time[] = "28/Sep/1970:12:00:00";
+ngx_str_t    ngx_cached_http_log_time;
+
+
+time_t ngx_time()
+{
+    return ngx_cached_time;
+}
+
+
+/* TODO: remove strftime() */
+
+void ngx_time_update()
+{
+    ngx_tm_t     *tp, tm;
+    static char  *months[] = { "Jan", "Feb", "Mar", "Apr", "May", "Jun",
+                               "Jul", "Aug", "Sep", "Oct", "Nov", "Dec" };
+
+    /* STUB: need to move to ngx_init_time() */
+    ngx_cached_http_time.data = cached_http_time;
+    ngx_cached_http_log_time.data = cached_http_log_time;
+
+    tp = gmtime(&ngx_cached_time);
+
+    ngx_cached_http_time.len = strftime(ngx_cached_http_time.data,
+                                        sizeof("Mon, 28 Sep 1970 06:00:00 GMT"),
+                                        "%a, %d %b %Y %H:%M:%S GMT", tp);
+
+
+    ngx_localtime(&tm);
+
+    ngx_cached_http_log_time.len = ngx_snprintf(ngx_cached_http_log_time.data,
+                                       sizeof("28/Sep/1970:12:00:00"),
+                                       "%02d/%s/%d:%02d:%02d:%02d",
+                                       tm.ngx_tm_mday,
+                                       months[tm.ngx_tm_mon - 1],
+                                       tm.ngx_tm_year,
+                                       tm.ngx_tm_hour,
+                                       tm.ngx_tm_min,
+                                       tm.ngx_tm_sec);
+}
diff --git a/src/core/ngx_times.h b/src/core/ngx_times.h
new file mode 100644
index 0000000..2cbcc72
--- /dev/null
+++ b/src/core/ngx_times.h
@@ -0,0 +1,18 @@
+#ifndef _NGX_TIMES_H_INCLUDED_
+#define _NGX_TIMES_H_INCLUDED_
+
+
+#include <ngx_config.h>
+#include <ngx_core.h>
+
+
+time_t ngx_time();
+void ngx_time_update();
+
+
+extern time_t     ngx_cached_time;
+extern ngx_str_t  ngx_cached_http_time;
+extern ngx_str_t  ngx_cached_http_log_time;
+
+
+#endif /* _NGX_TIMES_H_INCLUDED_ */
