如何确定系统使用的日期时间格式?

时间:2013-05-24 06:57:35

标签: python windows datetime-format

对于将通过网络使用的应用程序的集中式日志记录(尚未涉及服务器端应用程序),我还需要存储特定事件发生的时间。这项任务非常简单,但问题是,正如我所注意到的,网络上的计算机没有准确设置时间。因此,为了标准化我选择使用net time \\nas从NAS获取它的时间。一切都很好。

现在问题是,net time返回时间的格式取决于运行应用程序的特定系统的日期时间格式,保证一致,因此呈现{{ 3}}没用。任何解决方案和意见?

因为我在python中编码,所以无法使用hard coded dateformat conversion to timestamp解决方案。

1 个答案:

答案 0 :(得分:0)

我从net time \\nas获得的输出格式如下:

Current time at \\nas is dd/mm/yyyy HH:MM:SS

Local time (GMT) at \\nas is dd/mm/yyyy HH:MM:SS

The command completed successfully.

以下方法让我得到了我需要的东西:

import subprocess
import time
import datetime
from _winreg import *
from dateutil.parser import parse

def runProcess(exe):
    p = subprocess.Popen(exe, stdout=subprocess.PIPE, stderr=subprocess.STDOUT)
    while(True):
      retcode = p.poll() #returns None while subprocess is running
      line = p.stdout.readline()
      yield line
      if(retcode is not None):
        break

def nasTime():
    for line in runProcess(r"net time \\nas".split()):
        timeLine = line
        break
    timeLine = timeLine.split("is ")[1].replace("\r\n", "")
    hKey = OpenKey (HKEY_CURRENT_USER, r"Control Panel\International")
    value, type = QueryValueEx (hKey, "sShortDate")
    dayFirst = str(value).lower().startswith("d") # tells if day first format was being used
    return time.mktime(parse(timeLine, dayfirst = dayFirst).timetuple())

代码从hererunProcess)以及另一个我无法回忆的地方被盗。