如何将azure存储表时间戳作为字符串?

时间:2017-10-21 20:54:12

标签: powershell azure azure-storage azure-table-storage

我可以使用此PowerShell命令获取存储表行:

$temp_table_name = "MY_TABLE_NAME"
$saContext = (Get-AzureRmStorageAccount -ResourceGroupName $resourceGroup -Name $storageAccount).Context
$temp_table = Get-AzureStorageTable -Name $temp_table_name -Context $saContext
$result = Get-AzureStorageTableRowAll -table $temp_table

我的表中有两个Timestamp,一个用于名称为Timestamp的azure表,另一个用于名称为TIMESTAMP的Metrics(自动存储)。然后$result[0]的结果如下:

Average      : 3228132966.4
Count        : 240
CounterName  : \Memory\AvailableMemory
DeploymentId : 2c90752b-100f-4640-a056-e2b894bf5bd5
Host         : cpuusagetest
Last         : 3230662656
Maximum      : 3231711232
Minimum      : 3225419776
TIMESTAMP    : 10/16/2017 10:00:00 PM
Total        : 774751911936
PartitionKey : *************
RowKey       : ***************__:005CMemory:005CAvailableMemory
Etag         : W/"datetime'2017-10-16T23%3A00%3A05.5000867Z'"

我不知道为什么只有TIMESTAMP而另一个是Etag!在结果中。无论如何,我可以使用此命令获取时间戳:

$result[0].Timestamp

它将始终返回一个类似 10/16/2017 23:00:00 的字符串,但在表格的行中,它存储的内容类似于 2017-10-16T23:30:00.000 。我需要准确地获得它存储在存储表中的格式。
我尝试使用如下命令更改格式:

[String]$result[0].Timestamp
or
$result[$j].Timestamp.toString("s")

但结果是一样的。
请注意当我使用$result[$j].Timestamp.GetType().FullName结果为System.DateTime时,我的表格中的类型属性 DateTime 我不能(并且不想)改变它。
it's a screenshot of my Azure Storage Explorer that is showing that I have Minute & Second & milliseconds in my Timestamp 上面是我的Azure存储资源管理器的屏幕截图,显示我有分钟&第二&我的时间戳中的毫秒数

但是当我使用这个命令时:

$result[$j].Timestamp.toString("s")

结果是没有小步和秒...... 我甚至也测试了这些命令:

"{0:MM/dd/yyyy hh:mm:ss}" -f $result[$j].Timestamp

但结果类似于10/16/2017 10:00:00
你能指导我吗?

1 个答案:

答案 0 :(得分:1)

提供DateTime d类型的任何对象,命令d.ToString(" s")将以2017-10-16T23:30:00.000

格式返回日期对象

如果您有一个字符串并需要将其转换为DateTime,则以下内容将执行不同格式的日期字符串之间的转换:

[DateTime]::Parse("10/16/2017 23:00:00").ToString("s")

以上评估为" 2017-10-16T23:30:00.000"