Формат даты в формате float от Persavise db

Я получил данные от Persavive V12 Db. Даты в странном формате.
Они как поплавок

Example of date in table : 39787.0

Кто-нибудь знает этот формат? Кажется, это число дней с 1901 по 01-01.

Поскольку даты являются плавающими, возможно ли добавить дни из даты в PHP? Подобно :

$from = '1901-01-01';
$date = date('Y-m-d', strtotime($from .' +'. $float .' days'));

У меня всегда 1970-01-01. Есть ли другой способ?

0

Решение

Мой первый ответ, так что не делай мне больно.
Я не совсем уверен, что вы хотите сделать (положить обратно в базу данных или выполнить дальнейшие операции, поэтому я опубликовал только одно решение)

Число, которое вы опубликовали 39787.0, является отметкой времени Unix. Вам нужно использовать указываете ей конвертировать то, что вы хотите в число (и вам нужно Дата преобразовать его в читаемую форму). Так как mktime использует 1901-01-01 в качестве даты начала, вы должны внести пару изменений.

Я был ленивым и не включал весь код для всех полей, но это должно позволить вам изменить, чтобы добавить все, что вы хотите (и, возможно, очистить его до одной строки, если хотите).
Я сделал это в длинном виде, чтобы его было легко читать.

    <?

$olddate = 39787.0;
$hour = 0;
$min =  0;
$sec =  0;
$month =  0;
$year = 0;
$day = 12;
$month += date("m",$olddate);
$day += date("d",$olddate);
$year += date("Y",$olddate);
$x = date("Ymd",mktime($hour,$min,$sec,$month,$day,$year));
echo $x;

?>
0

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

Если 39787.0 находится в базе данных, какое значение это имеет в реальной дате (с помощью приложения)? Если это 2008-12-05, то это дата VB. Знаете ли вы, что приложение было написано? Я видел, как люди используют тип данных VB Date и хранят его в 8-байтовом буфере в Btrieve (еще в 2003 году). Если это дата VB, 1 1899-12-31, Вы должны быть в состоянии добавить номер к 1899-12-30 чтобы получить правильное значение даты. Что-то вроде:

<?php
$date = new DateTime('1899-12-30');
$date->add(new DateInterval('P39787D'));
echo $date->format('Y-m-d') . "\n";
?>
0

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