🕒 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) |

浙公网安备 33010602011771号