将 Unix 时间戳转换为 .net int64 日期时间
Convert Unix Timestamp to .net int64 datetime
首先,我知道它是重复的,但这些问题不是我要找的。
我正在使用 API 在在线申请中添加参与者。当我 post JSON 反对端点时,除日期外,所有内容都是 posted。日期格式存在一些误解。如果我得到现有的参与者并检查日期格式是这样的:
{
"participant":{
"ID":201954,
// Long Object
"DateOfBirth":"\/Date(857305424000-0500)\/",
}
}
我发现前 9 个字符是 UNIX 时间戳,但其余的是?没有把握。知道这是什么格式吗?
编辑
在线申请是在.net/asp/c# 不确定的。但是我正在 php 应用程序中编写我的代码,该应用程序通过 cURL
post json 对象
编辑 2
我检查了解析错误的格式并收到此错误:
The value '0.48631700 1425319593' cannot be parsed as the type
'Int64'.'. Please see InnerException for more details.
知道如何在 php 中获取 .net 的 int64 日期时间格式吗?
JSON本身does not specify how dates should be formatted, so you need to know the requirements of the target .NET application. Most likely it makes sense to convert to a "readable" date format
示例 (php):
$timestamp=1333699439;
echo gmdate("Y-m-d\TH:i:s\Z", $timestamp);
// outputs 2012-04-06T08:03:59Z
示例 (.net):
DateTime d;
DateTime.TryParse("2012-04-06T08:03:59Z", out d);
// receives 4/6/2012 8:03:59 AM (in US-format)
编辑:
.NET int64 格式是自 0001-01-01 00:00:00 午夜以来的滴答数(每个滴答是 1/10000000 秒),UNIX 时间戳是自 UNIX 纪元开始以来的秒数( 1970-01-01 01:00:00),所以期望的结果是 $seconds = 621355968000000000/10000000 - $number_of_seconds,参见 Convert ticks to unix timestamp and https://kramerc.com/2010/11/30/converting-datetime-ticks-into-a-unix-timestamp-in-php/
因此,对于 JSON 输出你应该做
$timestamp=1333699439;
$ticks = ($timestamp * 10000000) + 621355968000000000;
// outputs 634692962390000000
测试函数php
function ticks_to_time($ticks) {
return floor(($ticks - 621355968000000000) / 10000000);
}
$time = ticks_to_time(634692962390000000);
echo date("F j Y g:i:s A T", $time);
// outputs April 6 2012 4:03:59 AM EDT
测试功能.net
Int64 intDate = 634692962390000000;
DateTime dt = new DateTime(intDate);
Console.WriteLine(dt.ToString());
// outputs 4/6/2012 8:03:59 AM
首先,我知道它是重复的,但这些问题不是我要找的。
我正在使用 API 在在线申请中添加参与者。当我 post JSON 反对端点时,除日期外,所有内容都是 posted。日期格式存在一些误解。如果我得到现有的参与者并检查日期格式是这样的:
{
"participant":{
"ID":201954,
// Long Object
"DateOfBirth":"\/Date(857305424000-0500)\/",
}
}
我发现前 9 个字符是 UNIX 时间戳,但其余的是?没有把握。知道这是什么格式吗?
编辑 在线申请是在.net/asp/c# 不确定的。但是我正在 php 应用程序中编写我的代码,该应用程序通过 cURL
post json 对象编辑 2 我检查了解析错误的格式并收到此错误:
The value '0.48631700 1425319593' cannot be parsed as the type 'Int64'.'. Please see InnerException for more details.
知道如何在 php 中获取 .net 的 int64 日期时间格式吗?
JSON本身does not specify how dates should be formatted, so you need to know the requirements of the target .NET application. Most likely it makes sense to convert to a "readable" date format
示例 (php):
$timestamp=1333699439;
echo gmdate("Y-m-d\TH:i:s\Z", $timestamp);
// outputs 2012-04-06T08:03:59Z
示例 (.net):
DateTime d;
DateTime.TryParse("2012-04-06T08:03:59Z", out d);
// receives 4/6/2012 8:03:59 AM (in US-format)
编辑:
.NET int64 格式是自 0001-01-01 00:00:00 午夜以来的滴答数(每个滴答是 1/10000000 秒),UNIX 时间戳是自 UNIX 纪元开始以来的秒数( 1970-01-01 01:00:00),所以期望的结果是 $seconds = 621355968000000000/10000000 - $number_of_seconds,参见 Convert ticks to unix timestamp and https://kramerc.com/2010/11/30/converting-datetime-ticks-into-a-unix-timestamp-in-php/
因此,对于 JSON 输出你应该做
$timestamp=1333699439;
$ticks = ($timestamp * 10000000) + 621355968000000000;
// outputs 634692962390000000
测试函数php
function ticks_to_time($ticks) {
return floor(($ticks - 621355968000000000) / 10000000);
}
$time = ticks_to_time(634692962390000000);
echo date("F j Y g:i:s A T", $time);
// outputs April 6 2012 4:03:59 AM EDT
测试功能.net
Int64 intDate = 634692962390000000;
DateTime dt = new DateTime(intDate);
Console.WriteLine(dt.ToString());
// outputs 4/6/2012 8:03:59 AM