当前位置:网站首页 > 更多 > 玩电脑 > 正文

[玩转系统] PowerShell 中的日期格式:快速参考

作者:精品下载站 日期:2024-12-14 21:41:17 浏览:14 分类:玩电脑

PowerShell 中的日期格式:快速参考


作为每天使用 PowerShell 的人,我知道能够正确设置日期格式是多么重要。 PowerShell Get-Date 是一个功能强大的 cmdlet,允许用户在脚本中检索和操作日期和时间信息。默认情况下,Get-Date 以系统标准格式返回当前日期和时间。但是,了解如何在 PowerShell 中转换和格式化日期和时间值对于有效的脚本编写和数据操作至关重要。

无论您是处理日期时间值还是仅仅需要将日期转换为特定格式,掌握 PowerShell 的日期格式化功能都是至关重要的。在本综合指南中,我们将讨论 PowerShell 日期格式以及如何利用它们将日期格式设置为您喜欢的格式。

为什么日期格式在 PowerShell 中很重要?

日期格式决定了日期和时间信息在脚本中的显示和处理方式。由于多种原因,它在 PowerShell 中发挥着至关重要的作用。首先,不同的系统、地区和应用程序可能使用不同的日期格式,您可能需要将它们转换为特定的格式以确保兼容性。其次,在处理文件或数据库时,准确的日期格式对于有效排序、过滤和查询数据至关重要。最后,以人类可读的格式呈现日期对于生成报告或向最终用户显示信息至关重要。通过掌握 PowerShell 中的日期格式,您可以确保脚本和自动化任务的一致性、准确性和可用性。

了解 PowerShell 中不同类型的日期格式

在开始在 PowerShell 中设置日期格式之前,了解可用的不同类型的日期格式非常重要。最常见的格式是“dd/mm/yyyy”或“mm/dd/yyyy”格式,其中“dd”代表日期,“mm”代表月份,“yyyy”代表年份。但是,PowerShell 支持多种日期格式,包括带有或不带有时间部分的日期格式,以及不同的分隔符(例如连字符或斜杠)。

在 PowerShell 中,您可以使用 Get-Date cmdlet 及其 -Format 参数设置日期和时间的格式。 -Format 参数允许您指定日期和时间的输出格式。您可以使用自定义日期和时间格式字符串来控制格式化的执行方式。

使用 Get-Date Cmdlet 设置日期格式

PowerShell 提供了多种格式化日期的方法。转换日期格式的最简单方法之一是利用 Get-Date cmdlet 的 -Format 参数。此参数允许您指定自定义格式字符串以所需格式显示日期和时间。

例如,如果要以“dd/MM/yyyy HH:mm:ss”格式显示当前日期和时间,可以使用以下命令:


Get-Date -Format "dd/MM/yyyy HH:mm:ss"

这将返回一个以所需格式表示当前日期和时间的字符串。例如,“2021 年 8 月 22 日 14:03:16”。

以下是常见格式模式的列表:

d

短日期模式(例如“5/25/2023”)

D

长日期模式(例如,“2023 年 5 月 25 日,星期四”)

t

短时间模式(例如“2:30 PM”)

T

长时间模式(例如“2:30:00 PM”)

f

完整日期/时间模式(短时间)(例如“2023 年 5 月 25 日星期四下午 2:30”)

F

完整日期/时间模式(长时间)(例如,“2023 年 5 月 25 日星期四 2:30:00 PM”)

g

一般日期/时间模式(短时间)(例如“5/25/2023 2:30 PM”)

G

一般日期/时间模式(长时间)(例如,“5/25/2023 2:30:00 PM”)

M or m

月日模式(例如“5 月 25 日”)

Y or y

年月模式(例如“2023 年 5 月”)

s

可排序的日期时间(例如“2023-08-22T22:51:27”)

u

通用可排序日期时间(例如“2022-01-01 00:00:00Z”)

U

使用通用时间的完整日期和时间(例如,“2023 年 12 月 31 日星期五 8:00:00 PM”)

[玩转系统] PowerShell 中的日期格式:快速参考

我们在 Get-Date cmdlet 中还有“DisplayHint”参数,它支持:日期、日期时间和时间值。例如。,


 Get-Date -DisplayHint Date

[玩转系统] PowerShell 中的日期格式:快速参考

[DateTime] 不同格式的对象方法

DateTime 对象还提供了一些以不同格式检索日期和时间的方法:

  • ToLongDateString()
  • 短日期字符串
  • ToLongTimeString()
  • 转短时间字符串
  • 通用时间()

使用 ToString() 方法设置日期格式

在 PowerShell 中格式化日期的另一种方法是使用 ToString() 方法。此方法允许您使用特定日期格式将日期对象转换为字符串表示形式。

例如,如果您有一个表示 2022 年 1 月 1 日的 DateTime 对象,并且希望将其转换为格式为“yyyy/MM/dd”的字符串,则可以使用以下命令:


$Date = Get-Date "01/01/2022"
$Date.ToString("yyyy/MM/dd")

这将返回字符串“2022/01/01”。

以下是 PowerShell 中使用的一些最常见的日期格式字符串:

dd/MM/yyyy

此格式表示日期的日、月、年,并用斜杠分隔。例如,“01/01/2022”代表 2022 年 1 月 1 日。

MM/dd/yyyy

此格式与前一种格式类似,但月份和日期相反。例如,“01/01/2022”代表 2022 年 1 月 1 日。

yyyy/MM/dd

此格式表示日期的年、月、日,用斜杠分隔。例如,“2022/01/01”代表 2022 年 1 月 1 日。

yyyy-MM-dd

此格式与前一种格式类似,但使用连字符而不是斜杠。例如,“2022-01-01”代表 2022 年 1 月 1 日。

yyyy/MM/dd HH:mm:ss

此格式表示日期的年、月和日,后跟小时、分钟和秒,并用斜杠和冒号分隔。例如,“2022/01/01 12:00:00”代表 2022 年 1 月 1 日中午。

yyyy-MM-ddTHH:mm:ss

此格式与前一种格式类似,但用“T”分隔日期和时间部分。例如,“2022-01-01T12:00:00”代表 2022 年 1 月 1 日中午。

对于所有 .Net 日期格式,请参阅:自定义日期和时间格式字符串

使用 ParseExact() 方法转换日期格式

有时您可能需要将日期字符串从一种格式转换为另一种格式。这可以使用 ParseExact() 方法来完成,该方法允许您使用特定格式字符串解析日期字符串,然后将其转换为 DateTime 对象。

例如,如果您有一个格式为“dd/MM/yyyy”的日期字符串,并且需要将其转换为“yyyy/MM/dd”格式,则可以使用以下命令:


$dateString = "01/01/2022"
$myDate = [DateTime]::ParseExact($dateString, "dd/MM/yyyy", $null)
$myDate.ToString("yyyy/MM/dd")

这将返回字符串“2022/01/01”。

使用 -f 运算符进行自定义日期格式设置

除了我们已经介绍过的方法和 cmdlet 之外,PowerShell 还提供了功能强大的 -f 运算符,可用于创建自定义日期格式。此运算符允许您指定一个格式字符串,其中包含不同日期组件的占位符,然后在运行时将其替换为相应的值。

例如,如果要以“yyyy/MM/dd HH:mm:ss”格式显示当前日期和时间,可以使用以下命令:


"{0:yyyy/MM/dd HH:mm:ss}" -f (Get-Date)

这将返回一个以所需格式表示当前日期和时间的字符串。例如,“2021/08/22 14:04:32”

将日期时间值转换为字符串格式

要将日期时间值转换为字符串格式,您可以使用我们之前针对日期值介绍的相同方法和 cmdlet。例如,如果您有一个表示 2022 年 1 月 1 日中午的日期时间对象,并且希望将其转换为格式为“yyyy/MM/dd HH:mm:ss”的字符串,则可以使用以下命令:


$DateTime = Get-Date "01/01/2022 12:00:00"
$DateTime.ToString("yyyy/MM/dd HH:mm:ss")

这将返回字符串“2022/01/01 12:00:00”。

将 PowerShell 日期格式转换为 dd/mm/yyyy

将 PowerShell 日期格式转换为“dd/mm/yyyy”格式是许多地区的常见要求。要转换日期格式,可以将 Get-Date cmdlet 与 -Format 参数结合使用。以下是一些示例:


$currentDate = Get-Date -Format "dd/MM/yyyy"
Write-Output $currentDate

将特定日期字符串转换为“dd/mm/yyyy”格式:

假设您有一个格式为“yyyy-MM-dd”的日期字符串(例如“2021-08-21”)并且您想要转换它:


$DateObject = [datetime]"2021-08-21"
$CnvertedDate = $DateObject.ToString("dd/MM/yyyy")
Write-Output $ConvertedDate

您还可以使用正则表达式和 -replace 运算符来重新排列日期组件并添加必要的分隔符。

例如,假设我们有一个格式为“yyyy-MM-dd”的日期字符串,我们希望将其转换为“dd/mm/yyyy”。我们可以通过使用以下 PowerShell 命令来实现此目的:


# Sample date string in "yyyy-MM-dd" format
$dateString = "2021-08-21"

# Use regular expression to rearrange the format
$convertedDate = $dateString -replace '^(\d{4})-(\d{2})-(\d{2})$', '$3/$2/$1'

# Output the result
Write-Output $convertedDate

在此示例中,我们使用 -replace 运算符捕获日期字符串的年、月和日部分,并使用“/”分隔符重新排列它们。

针对不同地区和语言设置日期格式

在 PowerShell 中格式化日期时的一项重要考虑因素是:支持不同的区域和语言。根据系统或应用程序的区域设置,您可能需要使用不同的日期格式或以不同的顺序显示日期组件。

要在 PowerShell 中设置不同区域和语言的日期格式,可以使用 CultureInfo 类。此类提供有关特定文化或地区的信息,包括其日期和时间格式。

例如,如果您想以法国使用的格式显示当前日期和时间,您可以使用以下命令:


$culture = [System.Globalization.CultureInfo]::GetCultureInfo("fr-FR")
Get-Date -Format $culture.DateTimeFormat.ShortDateTimePattern

这将返回一个字符串,以法国使用的格式表示当前日期和时间。

PowerShell 获取日期 -UFormat

PowerShell 的 Get-Date cmdlet 的 -UFormat 参数允许您使用 UNIX 样式格式占位符指定自定义格式字符串。此参数提供了一组全面的格式选项,可用于以多种格式显示日期和时间值。

要使用 -UFormat 参数,您需要指定所需的格式占位符。例如,要以“Saturday, January 01, 2022 12:00:00 AM”格式显示日期和时间,可以使用以下 PowerShell 命令:


Get-Date -UFormat "%A, %B %d, %Y %I:%M:%S %p"

%A%B%d%Y%I%M%S%p 是 UNIX 样式格式占位符,表示星期几、月、日、年、分别为小时、分钟、秒和 AM/PM 指示器。

PowerShell 日期格式备忘单

为了帮助您浏览 PowerShell 中可用的各种日期格式选项,以下是常用格式说明符的细分:

  1. 年份:

    • yy:两位数年份,例如22
  2. yyyy:四位数年份,例如 2022
  3. 月份:

    • M:不带前导零的月份,例如 8
  4. MM:带有前导零的月份,例如08
  5. MMM:月份名称缩写,例如 Aug
  6. MMMM:完整的月份名称,例如August
  7. 日期:

    • d:一个月中的某天,不带前导零,例如 5
  8. dd:月份中的某天,带前导零,例如 05
  9. ddd:星期几的缩写,例如,Tue
  10. dddd:一周中的某一天,例如星期二
  11. 时间:

    • h:12 小时格式,不带前导零。
  12. hh:12 小时格式,带前导零。
  13. H:24 小时格式,不带前导零。
  14. HH:24 小时格式,带前导零。
  15. 分钟:

    • m:不带前导零的分钟。
  16. mm:带前导零的分钟。
  17. 第二:

    • s:不带前导零的秒。
  18. ss:带前导零的秒。
  19. AM/PM 指示符:

    • tt:显示AMPM
  20. t:短时间格式(例如 12:00 AM)

要根据本地计算机设置获取所有日期格式,请使用以下脚本:


$DateTimeFormats = (Get-Date).GetDateTimeFormats()
$Formats = @()
$i=0
$DateTimeFormats | ForEach-Object {
    $Formats+= [PSCustomObject]@{
        'IndexNumber' = $i
        'DateTime Format' = $DTFormats[$i]
    }
    $i++
}
#Get All formats in Grid View
$Formats | Out-GridView

[玩转系统] PowerShell 中的日期格式:快速参考

如果你想获取指定格式的日期时间,可以使用:


$Formats[1].'DateTime Format'

PowerShell 中日期格式的最佳实践

现在我们已经介绍了 PowerShell 中日期格式的基础知识,让我们回顾一下在脚本和应用程序中处理日期时要记住的一些最佳实践:

  • 始终在各种场景中测试您的日期格式化代码,以确保其按预期工作。
  • 考虑将 -ErrorAction 参数与处理日期的 cmdlet 和方法结合使用,以处理可能出现的任何错误。
  • 考虑将日期存储在变量中并操作其格式,而不是重复调用 Get-Date cmdlet。这提高了脚本性能并更容易维护。
  • 使用日期时间值时,请务必考虑 24 小时时钟格式。
  • 使用包含时区信息的日期时间值时,请务必正确处理时区。
  • 请注意区域和系统特定的日期格式,以确保不同环境之间的兼容性。
  • 尽可能使用标准日期格式以增强可读性并保持一致性。
  • 利用自定义格式字符串和字符串运算符将日期和时间值转换为所需的格式。
  • 在处理复杂的日期格式转换时对代码进行记录和注释,以提高可维护性。

通过遵循这些最佳实践,您可以确保 PowerShell 脚本以一致且可靠的方式处理日期和时间值。

常见日期格式错误故障排除

即使考虑到最佳实践,在 PowerShell 中处理日期格式时仍然可能会遇到错误。以下是您可能会遇到的一些常见错误,以及一些解决这些错误的提示:

  • “字符串未被识别为有效的日期时间”:当您尝试使用与字符串实际格式不匹配的格式解析日期字符串时,会出现此错误。仔细检查您使用的格式字符串,以确保它与日期字符串的实际格式匹配。
  • “输入字符串的格式无效”:当您尝试使用无效的格式字符串将日期字符串转换为 DateTime 对象时,会出现此错误。仔细检查您使用的格式字符串以确保其有效。
  • “输入字符串的格式不正确”:当您尝试使用无效的格式字符串将日期字符串转换为 DateTime 对象时,会出现此错误。仔细检查您使用的格式字符串以确保其有效。

结论

总之,掌握 PowerShell 中的日期格式对于经常使用这个强大工具的任何人来说都是至关重要的。通过了解不同类型的日期格式并使用适当的方法和运算符,您可以确保您的脚本和应用程序正确有效地工作。尝试不同的格式选项和自定义格式字符串,以在脚本中实现所需的日期和时间表示。请记住始终彻底测试您的代码,并遵循最佳实践以最大限度地减少错误并确保最大的兼容性。牢记这些技巧,您将顺利成为 PowerShell 日期格式化专家。

您需要 登录账户 后才能发表评论

取消回复欢迎 发表评论:

关灯