Конвертировать метку времени Unix в .net int64 datetime

Во-первых, я знаю, что это дубликат, но эти вопросы не то, что я ищу.

Я использую API для добавления участников в онлайн-приложение. Когда я публикую объект JSON в конечной точке, все публикуется, кроме дат. Есть некоторые недоразумения с форматом даты. Если я получу существующих участников и проверю формат даты, то это:

{
"participant":{
"ID":201954,
//  Long Object
"DateOfBirth":"\/Date(857305424000-0500)\/",
}
}

Я понял, что первые 9 символов являются метками времени UNIX, но остальные ?? Точно сказать не могу. Есть идеи, что это за формат?

РЕДАКТИРОВАТЬ
Онлайн приложение сделано в .net / asp / c #, не уверен насчет них. Но я пишу свой код в приложении php, которое публикует объект json через cURL

РЕДАКТИРОВАТЬ 2
Я проверил синтаксический анализ неправильных форматов и получил эту ошибку:

Значение «0.48631700 1425319593» не может быть проанализировано как тип
‘Int64’. ‘. Пожалуйста, смотрите InnerException для более подробной информации.

Любая идея, как я могу получить формат .net int64 datetime в php?

-1

Решение

Сам JSON не указывает, как даты должны быть отформатированы, поэтому вам необходимо знать требования целевого приложения .NET. Скорее всего, имеет смысл преобразовать в «читаемый» формат даты

Пример (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, см. Конвертировать тики в метку времени Unix а также 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
1

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector