🕒 PowerShell - 日期和时间操作

🕒 PowerShell - 日期和时间操作 学习笔记

在 PowerShell 中,时间和日期是通过 [datetime] 类型和 Get-Date 命令进行操作的。你可以进行格式化、加减时间、比较、提取部分信息等。


一、基础命令:Get-Date

作用

获取当前系统时间或将字符串解析为日期。

命令格式

Get-Date [-Format <string>] [-Date <datetime>]

常用参数

参数 说明
-Format 指定日期的输出格式
-Date 指定要处理的日期对象
-DisplayHint 仅显示 Date / Time / DateTime

示例

Get-Date                            # 当前日期和时间
Get-Date -Format "yyyy-MM-dd HH:mm" # 格式化输出

二、常见格式化方法

你可以使用 .ToString("格式") 方法或 -Format 参数自定义日期格式。

常用格式化字符串

格式代码 输出示例 含义
yyyy 2025 年(四位数)
MM 06
dd 29
HH 15 小时(24小时制)
mm 45 分钟
ss 09
dddd Sunday 星期几
tt AM/PM 上午/下午(12小时制)

示例

(Get-Date).ToString("yyyy/MM/dd HH:mm:ss")
Get-Date -Format "yyyy-MM-dd dddd"

三、创建特定日期对象

1. 使用构造函数 [datetime]

[datetime]::new(2025, 1, 1, 12, 30, 0)

2. 将字符串转换为日期

[datetime]::Parse("2025-06-29")
[datetime]::ParseExact("29/06/2025", "dd/MM/yyyy", $null)

四、提取日期的各个部分属性

你可以直接访问 [datetime] 对象的属性:

$now = Get-Date
$now.Year       # 年
$now.Month      # 月
$now.Day        # 日
$now.Hour       # 小时
$now.Minute     # 分钟
$now.Second     # 秒
$now.DayOfWeek  # 星期几
$now.DayOfYear  # 第几天

五、时间加减操作

加时间(使用 .AddXxx() 方法)

方法名称 说明
.AddDays(n) 增加/减少 n 天
.AddMonths(n) 增加/减少 n 个月
.AddYears(n) 增加/减少 n 年
.AddHours(n) 增加/减少 n 小时
.AddMinutes(n) 增加/减少 n 分钟
.AddSeconds(n) 增加/减少 n 秒

示例

(Get-Date).AddDays(7)        # 当前时间加 7 天
(Get-Date).AddHours(-1)      # 当前时间减 1 小时

六、比较两个日期

你可以使用比较运算符 -eq-lt-gt-le-ge-ne 来比较两个日期。

示例

$d1 = Get-Date
$d2 = $d1.AddDays(1)

$d2 -gt $d1      # True

也可以计算两个日期之间的时间间隔:

$d1 = Get-Date
$d2 = [datetime]"2025-07-01"
$diff = $d2 - $d1
$diff.Days         # 间隔的天数
$diff.TotalHours   # 总小时数

七、将日期保存到文件或用作文件名

生成带时间戳的文件名

$timestamp = Get-Date -Format "yyyyMMdd_HHmmss"
"Log content" | Out-File "log_$timestamp.txt"

八、其他实用技巧

1. 判断日期是否为周末

$date = Get-Date
if ($date.DayOfWeek -eq 'Saturday' -or $date.DayOfWeek -eq 'Sunday') {
    "今天是周末"
}

2. 获取月初、月末日期

$now = Get-Date
$firstDay = Get-Date -Year $now.Year -Month $now.Month -Day 1
$lastDay = $firstDay.AddMonths(1).AddDays(-1)

九、常用函数整理(可复用)

function Get-Timestamp {
    return (Get-Date -Format "yyyy-MM-dd HH:mm:ss")
}

下面是对 PowerShell 中 Set-Date 命令的补充说明,已按你之前的笔记风格撰写,可直接插入到“PowerShell - 日期和时间操作”学习笔记中。


十、设置系统日期和时间:Set-Date

作用

用于设置本地计算机的系统日期和时间(需管理员权限)。


命令格式

Set-Date [-Date] <datetime>
Set-Date [-Adjust] <timespan>
Set-Date -Day <int> -Month <int> -Year <int> [-Hour <int>] [-Minute <int>] [-Second <int>]

常用参数

参数 说明
-Date 设定为某个具体的日期时间
-Adjust 相对于当前时间加/减一个时间间隔
-Year -Month -Day 指定日期部分
-Hour -Minute -Second 可选时间部分

使用示例

✅ 示例 1:将系统时间设置为 2025 年 7 月 1 日 12:00:00(需管理员权限)

Set-Date -Date "2025-07-01 12:00:00"

✅ 示例 2:只设置时间,不修改日期

Set-Date -Hour 9 -Minute 30 -Second 0

✅ 示例 3:将当前时间加 5 分钟

Set-Date -Adjust (New-TimeSpan -Minutes 5)

✅ 示例 4:通过分项设置完整日期时间

Set-Date -Year 2025 -Month 6 -Day 29 -Hour 15 -Minute 0 -Second 0

⚠️ 注意事项

  • 修改系统时间通常需要以管理员身份运行 PowerShell

  • 某些系统启用了“自动同步时间”功能,手动修改时间可能被还原。


🔚 总结表格

操作 命令/方法 示例
获取当前时间 Get-Date Get-Date
格式化时间 -Format.ToString() Get-Date -Format "yyyy-MM-dd"
解析字符串为日期 [datetime]::Parse() [datetime]::Parse("2025-06-29")
提取时间属性 .Year .Month .Day (Get-Date).Year
时间加减 .AddDays() 等方法 (Get-Date).AddDays(1)
比较两个时间 -gt -lt $a -gt $b
时间间隔 日期相减返回 TimeSpan 对象 ($d2 - $d1).Days
时间戳文件名 Get-Date -Format "log_$(Get-Date -Format "yyyyMMdd").txt"
设置系统日期时间 Set-Date Set-Date -Date "2025-07-01 12:00:00"
增加时间 -Adjust Set-Date -Adjust (New-TimeSpan -Minutes 10)
posted @ 2025-06-29 18:04  kyle_7Qc  阅读(436)  评论(0)    收藏  举报