使用PowerShell生成PO邮件:ARR_Arrived_Date日期格式修正求助
解决PowerShell中ARR_Arrived_Date列的短日期格式问题
我明白你的需求——你已经能成功获取PO数据并生成HTML邮件,但ARR_Arrived_Date显示的是带时间的完整日期,想改成仅显示短日期格式对吧?这其实可以通过在转换为HTML前先处理数据的方式解决,下面给你两种可行的方案:
方案1:使用计算属性格式化日期
在Select-Object中通过计算属性来重新定义ARR_Arrived_Date的输出格式,然后再传给ConvertTo-Html。这样能确保生成的HTML里只显示短日期:
$data = Invoke-RestMethod -Uri https://XXXXXXX/api/v1/BaqSvc/ArrivedPO/ -Credential $Cred -ContentType "Application/Json; charset=UTF-8" $Header = @" <style> TABLE {border-width: 1px; border-style: solid; border-color: #CCCCCC; border-collapse: collapse;} TH {border-width: 1px; padding: 3px; border-style: solid; border-color: black; background-color: #00FF00;} TD {border-width: 1px; padding: 3px; border-style: solid; border-color: black;} </style> "@ $message.IsBodyHTML = $true # 这里用计算属性处理日期格式 $processedData = $data.value | Select-Object ` ARR_PONum, ARR_PackSlip, ARR_Vendor_Name, @{Name='ARR_Arrived_Date'; Expression={ Get-Date $_ -Format 'MM/dd/yyyy' }}, ARR_Days_Arrived, ARR_FirstName, ARR_LastName, ARR_OrderNum, ARR_OpportunityID, ARR_Name $message.Body = $processedData | ConvertTo-Html -Head $Header
细节说明:
@{Name='ARR_Arrived_Date'; Expression={ ... }}是PowerShell的计算属性语法:Name指定输出的列名(保持和原列名一致,避免表头混乱)Expression里的逻辑用来转换日期格式:Get-Date $_ -Format 'MM/dd/yyyy'会把输入的日期值转换成MM/dd/yyyy的短日期格式(比如10/16/2019)
方案2:针对字符串类型的日期处理
如果API返回的ARR_Arrived_Date是字符串类型(而非DateTime对象),可以先把它解析成DateTime再格式化:
@{Name='ARR_Arrived_Date'; Expression={ [DateTime]::Parse($_).ToString('MM/dd/yyyy') }}
这样能确保即使原始数据是字符串,也能正确转换为短日期格式。
这两种方法都能让你的邮件里只显示短日期,不会带多余的时间部分,你可以根据自己的实际数据类型选择合适的方案~
内容的提问来源于stack exchange,提问作者ben stohr
相关产品推荐
相关产品推荐

