如何在QML中更改系统时间和日期?我认为这可能来自一个例子,尽管我怀疑这个对象是在哪里发送的。它没有用。有人能让我知道怎么做吗?以下是我的代码:
var time = new Date()
time.setHours(hour)
time.setMinutes(minute)
time.setSeconds(secs)
答案 0 :(得分:0)
您通常无法在没有root权限的情况下更改系统时间,并且设置系统时间是系统管理员的整个系统操作。请参阅settimeofday(2)和adjtimex(2)。另见credentials(7)& capabilities(7)
(所以这不是使用Qt或其他内容的问题;任何使用settimeofday
或adjtimex
的库都需要root权限)
另请阅读time(7)。
你通常不应该改变系统时间,而是使用NTP使用一些守护进程来连续调整它。
您的代码只是在一段时间内更改某个变量的值。它不会改变系统时间。
系统管理员可以更改时间,例如与-s
一起使用的date(1)需要root权限并在内部使用settimeofday
。另请参阅hwclock(8)。
请注意,GUI应用程序通常不应以root身份运行(并且Qt或GTK不希望以root身份运行)。
如果你开发了一些嵌入式系统并且希望用户设置时间,你可以考虑编写一些使用setuid的小型专用settimeofday(2)可执行文件并拥有你的GUI应用程序运行它(例如使用QProcess)。在编写setuid程序时要非常小心(因此请阅读ALP或关于Linux系统编程的一些好书),因为您可以轻松获得vulnerabilities。请注意 setuid 是基本机制(由/bin/login
,/bin/su
,/usr/bin/sudo
等使用...;它也可用于Android系统或任何Unix - 来源系统)获取或更改权限。使用起来很棘手,所以要花时间去理解它。
也许您的init
或systemd
可能会配置为简化此类任务....
(您需要更多地描述整个系统以获得更多帮助)