【问题标题】:Trying to format ticks as datetime and export to excel尝试将刻度格式化为日期时间并导出到 excel
【发布时间】:2019-01-12 00:07:54
【问题描述】:

我正在为一个问题苦苦挣扎,希望您能帮助我。

我正在使用get-winevent 从计算机中获取特定事件并将结果导出到 csv。

我正在设置一个变量来保存所有返回的事件,然后使用 foreach 循环遍历所有事件并将它们导出到 csv 文件。 当我导出 timecreated 对象时,数据被格式化为日期时间,我可以对最旧到最新或从最新到最旧进行排序。我遇到的是“timecreated”的默认格式是“MM/DD/YYYY hh:mm”。这会导致一个问题,除非我能看到秒和毫秒,否则很多这些事件似乎是同时发生的。

为了解决这个问题,我一直在使用以下格式来格式化日期:

$ticks = [datetime]$event.timecreated.Ticks

$date = $ticks.Tostring("MM/dd/yyyy hh:mm:ss:fff")

当我刚刚输出到屏幕时,这很好用,日期显示完全符合我的要求。但是,由于变量是字符串,所以当我将变量导出到excel时,我无法按时间排序。

有谁知道将刻度转换为我想要的显示格式的方法,但将其保留为日期时间而不是字符串?或者以任何方式获取 timecreated 对象并按照我想要的方式对其进行格式化,而无需将其转换为字符串?

我开始认为我可能必须创建一个 PSObject 并以这种方式处理它,但我不确定我是否能做到。

感谢阅读。

【问题讨论】:

  • 尝试将字符串放入excel,并将excel中的类型设置为日期。
  • 谢谢,我试过了,还是不行。
  • 首先,它应该是ss.fff 而不是ss:fff。不过,老实说,这还不够,因为您没有 AM/PM 指示,并且已将时间转换为 12 小时标准,并排除了 AM/PM。您应该使用 HH 而不是 hh 或在末尾添加 tt 以显示 AM/PM。如果这在 Excel 中不起作用,您如何将变量导出到 Excel?如果你想要一个可排序的日期/时间字符串,你应该使用'yyyy/MM/dd HH:mm:ss.fff'
  • 如果你想把数据存入Excel,那就另存为excel。使用这个模块,很棒:powershellgallery.com/packages/ImportExcel/5.4.0我测试了导出wineevents:日期以正确的方式导出,包括毫秒。
  • 感谢您的回复。 Madtechnician,我不知道小时面具的重要性。我不知道大写表示24小时制,所以我会做相应的调整。我还将把“:”改成“.”。 Gert,我将检查您链接到的模块。看起来很有趣。

标签: powershell date datetime


【解决方案1】:

如果我了解您的整个查询和异常结果。

我已经测试了您要查找的内容,结果我们不必在 Excel 上将“fff”添加到字符串日期格式,因为它不起作用。

试试这个:

$ticks = [datetime]$event.timecreated.Ticks

$date = $ticks.Tostring("MM/dd/yyyy hh:mm:ss")

我们用于测试的完整示例:

$events =Get-WinEvent -ListLog * | Where {$_.IsClassicLog -eq ‘True’}

$events  | Select-Object LogMode, RecordCount, LogName, @{n="DateWrite";e={$_.LastWriteTime.ToString("dd/MM/yyyy hh:mm:ss")}} | Export-Csv -Path c:\fso\event_tester.csv -Encoding ascii -NoTypeInformation

结果有例外的日期列:

资源: How to represent a DateTime in Excel

pandas output timestamps to_excel with microseconds

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-07-20
    • 2014-05-16
    • 1970-01-01
    • 2017-07-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多