欢迎各位兄弟 发布技术文章

这里的技术是共享的

You are here

macos shell date 命令 以时间戳来设置时间 我自己亲自做的 通义 chatgpt 有大用

我自己亲自做的做法是:   # $time_from_aaaa 是时间戳

formatted_date_time=$(date -r $time_from_aaaa "+%m%d%H%M%Y.%S")

sudo date "$formatted_date_time"



在 macOS 中,使用 date 命令来设置系统时间需要管理员权限,并且需要使用 systemsetup 命令,因为 date 命令本身主要用于显示和解析日期/时间,而不是设置系统时间。

要设置系统时间为某个特定的时间戳,首先你需要将时间戳转换为可读的日期格式,然后使用 systemsetup 来设置系统时间。

以下是如何使用 datesystemsetup 命令来实现这一目标:

  1. 首先,将时间戳转换为日期格式。假设你的时间戳是 Unix 时间戳(从1970年1月1日开始的秒数),你可以使用以下命令:

  2. -r seconds  这里-r是时间戳的意思,以时间戳的格式显示

  3.    Print the date and time represented by seconds, where seconds is

  4.    the number of seconds since the Epoch (00:00:00 UTC, January 1,

  5.   1970; see time(3)), and can be specified in decimal, octal, or hex.

Bash    
深色版本            
   
1    timestamp=1689322200 # 示例时间戳
2    date -r $timestamp "+%Y-%m-%d %H:%M:%S"
   


这会输出类似于 2024-07-14 10:30:00 这样的日期和时间。

  1. 接下来,使用 systemsetup 命令来设置系统时间。由于 systemsetup 需要管理员权限,所以你需要使用 sudo。但是,systemsetup 不接受 date 命令的格式,而是需要 MM/DD/YYYY HH:MM:SS 的格式。因此,你需要再次格式化时间:

Bash    
深色版本            
   
1    timestamp=1689322200
2    formatted_date=$(date -r $timestamp "+%m/%d/%Y %H:%M:%S")
3    sudo systemsetup -settime "$formatted_date"
   


然而,systemsetup 命令不接受秒数,所以你需要去掉秒数部分:

下面是正确的代码

Bash    
深色版本            
   
1    sudo systemsetup -setusingnetworktime off  #关闭网络时间同步
1       timestamp=1689322200
2    formatted_date=$(date -r $timestamp "+%m/%d/%Y %H:%M") 4    sudo systemsetup -setdate $(date -r $timestamp "+%m/%d/%Y") 5    sudo systemsetup -settime $(date -r $timestamp "+%H:%M")
   


请确保你有权限运行 sudo 命令,并且在执行上述命令前确认你的格式是否正确,以免设置错误的时间。

注意:在 macOS 上,通过命令行更改系统时间可能会影响 NTP 时间同步服务,如果你的计算机通常与 NTP 服务器同步时间,那么更改后可能需要禁用或重新配置 NTP 服务。在进行任何更改之前,请确保你了解所有相关的风险和后果。


普通分类: