【问题标题】:Change the date order of a txt file更改 txt 文件的日期顺序
【发布时间】:2022-11-04 23:39:31
【问题描述】:

我有一个变量,我在其中转储某些事件的日期、月份和年份。

$我的变量-> 17/10/2022

我需要更改日期和月份的顺序。

$新变量-> 10/17/2022

有人知道该怎么做吗?有任何想法吗?

我开始使用 powershell,但我想不出办法。欢迎任何帮助或建议。

谢谢你的时间

【问题讨论】:

  • 你用哪个壳?
  • 如果您只是在寻找 PowerShell 解决方案,请仅使用 powershell 标记,而不是 bash 标记。最好把问题集中在语。

标签: bash powershell shell


【解决方案1】:

在 Powershell 中

$NewVariable = '{0:MM/dd/yyyy}' -f [datetime]::ParseExact($MyVariable, 'dd/MM/yyyy',$null)

如果您当前的区域设置在输出格式中指定连字符而不是斜杠(例如在我的机器上具有荷兰语设置),您可能希望将 '{0:MM/dd/yyyy}' 更改为 '{0:MM/dd/yyyy}'。 通过在斜杠前面加上反斜杠,您将有效地转义它们,因此输出总是像10/17/2022

【讨论】:

    【解决方案2】:

    要添加到Theo's helpful answer

    基于的解决方案文本操作,使用-split-join 运算符,结合array 索引:

    $MyVariable = '17/10/2022'
    
    # -> '10/17/2022'
    $NewVariable =
      ($MyVariable -split '/')[1, 0, 2] -join '/'
    

    基于 [datetime] 对象的解决方案,如 Theo 的回答:

    $MyVariable = '17/10/2022'
    
    # -> '10/17/2022'
    $NewVariable =
      [datetime]::Parse($MyVariable, [cultureinfo] 'en-GB').ToString('MM"/"dd"/"yyyy')
    

    如果需要,使用 [datetime] 对象可以为您提供更大的灵活性:

    • 该解决方案利用17/10/2022 的优势,即带有/ 分隔符的第一天日期格式,用于en-GB(英国-英语)文化,因此可以在上下文中按原样解析那种文化。然后使用.ToString() 方法根据需要对生成的[datetime] 实例进行格式化。

    • 如果您当前的文化是美国英语文化,您可以简化为 .ToString('d'),因为 10/17/2022 是该文化的短日期格式 (d)。

    【讨论】:

      【解决方案3】:

      这是一个bash答案:

      Myvariable='17/10/2022'
      
      # EDIT:  Using Cyrus's FS,OFS improvement:
      Newvariable=$( awk  'BEGIN { FS=OFS="/" }{ print $2,$1,$3 }' <<< "$Myvariable" )
      
      echo $Newvariable
      

      结果:

      10/17/2022
      

      【讨论】:

      • 输入和输出字段分隔符的替代方案:awk 'BEGIN{ FS=OFS="/" }{ print $2,$1,$3 }' &lt;&lt;&lt; "$Myvariable"
      猜你喜欢
      • 2023-01-23
      • 2022-07-22
      • 2018-03-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多