systime.py 1.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344
  1. import subprocess
  2. def set_timezone(timezone: str) -> int:
  3. """使用 timedatectl 设置系统时区"""
  4. try:
  5. ret = subprocess.run(
  6. ["timedatectl", "set-timezone", timezone],
  7. check=True,
  8. stdout=subprocess.PIPE,
  9. stderr=subprocess.PIPE,
  10. text=True
  11. )
  12. return 0
  13. except subprocess.CalledProcessError as e:
  14. print("设置时区失败:", e.stderr)
  15. return -1
  16. def set_system_time(year, month, day, hour, minute, second=0) -> int:
  17. """使用 timedatectl 设置系统时间"""
  18. time_str = f"{year}-{month:02d}-{day:02d} {hour:02d}:{minute:02d}:{second:02d}"
  19. try:
  20. ret = subprocess.run(
  21. ["timedatectl", "set-time", time_str],
  22. check=True,
  23. stdout=subprocess.PIPE,
  24. stderr=subprocess.PIPE,
  25. text=True
  26. )
  27. return 0
  28. except subprocess.CalledProcessError as e:
  29. print("设置时间失败:", e.stderr)
  30. return -1
  31. def update_system_datetime(timezone, year, month, day, hour, minute, second=0):
  32. # 先设置时区
  33. if set_timezone(timezone) != 0:
  34. return -1
  35. # 再设置时间
  36. if set_system_time(year, month, day, hour, minute, second) != 0:
  37. return -2
  38. return 0