Помогите перевести даты из дробного формата.

Dmitriy-72

Есть таблица в которой дата и время представленны в виде десятичной дроби, где целая часть это год, а дробная часть года - все остальное.
Пример: 1997,334759821 из этого нужно получить гггг мм дд чч мм сс.
Может кто нибудь знает как это сделать.

Ivan8209

Никто и не узнает, потому что это должен знать ты сам.
Очевидно же, что у этой записи есть два сильно различающихся
наиболее удобных прочтения, неужели у тебя самого мозга нет?
---
"Унивеpситет pазвивает все способности, в том числе --- глупость."

Dasar

> Очевидно же, что у этой записи есть два сильно различающихся наиболее удобных прочтения
это к чему вообще? какие еще два прочтения?

Ivan8209

Это к тому, что доли могут быть равномерными, так, чтобы 0,1 года
не отличалась от года к году, и неравномерными, когда примерно
каждый четвёртый год длиннее среднего.
---
...Я работаю антинаучным аферистом...

Dasar

что-то типа такого (в том же excel-е можно сделать):
x - входное значение
DateFromYear(floor(x + (x-floor(x * (DateFromYear(ceiling(x - DateFromYear(floor(x
где floor - округление к -бесконечности, а ceiling - округление к +бесконечности

Dasar

> Это к тому, что доли могут быть равномерными, так, чтобы 0,1 года не отличалась от года к году
имхо, такое едва ли будут использовать, т.к. есть проблема, что именно брать за единицу, особенно если учесть, что за единицу надо брать самый длинный год из возможных.

Anna74

неравномерными, когда примерно
каждый четвёртый год длиннее среднего

Скорее всего это имеется в виду. Тем более Земля вокруг оси неравномерно вращается, иногда вроде в новогоднюю ночь последней секундой года астрономы добавляют добавочную секунду. Так что последние сутки длиннее 24 часов на секунду.
Инфу по этому можно поискать. Эта дополнительная секунда как-то учитывается в постановке?

Ivan8209

>> неравномерными, когда примерно
>> каждый четвёртый год длиннее среднего
> Скорее всего это имеется в виду.
Не очевидно и даже навряд ли, потому что нет смысла использовать
доли неравномерного года.
> Эта дополнительная секунда как-то учитывается в постановке?
Навряд ли это известно вопрошающему, раз вообще нет более или
менее однозначной постановки задачи.
---
...Я работаю антинаучным аферистом...

Dasar

> Не очевидно и даже навряд ли, потому что нет смысла использовать доли неравномерного года.
т.е. ты хочешь сказать, что где-то были люди, которые сидели и вбивали этот файл руками?
или были люди, которые разрабатывали стандарт на такое представление?
скорее всего этот файл получен с помощью экспорта из какой-нибудь компьютерной системы, простым использованием функции DateToYear(x соответственно года будут неравномерными.

Ivan8209

>> Не очевидно и даже навряд ли, потому что нет смысла
>> использовать доли неравномерного года.
> скорее всего этот файл получен с помощью экспорта из
> какой-нибудь компьютерной системы, простым использованием
> функции DateToYear(x соответственно года будут
> неравномерными.
А если оно получалось из времени?

отсчёт = 1970 (год)
год = 365,xxxxxx * 24 * 60 * 60 * 1000 (мс)
дата = время/год + отсчёт

---
...Я работаю антинаучным аферистом...

Dmitriy-72

Поясняю для всех: 0,1 для каждого четвертого года действительно отличаются. Нужно абсолютно точно перевести дату, вплоть до секунд. Переводы типа взять дробную часть*12, вычесть из общего, *31 и т.д. не пройдут.
Вроде слышал, что подобные программы есть у астрономов.

Anna74

Ну так сам набей. Тебе же годы до нашей эры по Григорианскому или еврейскому календарю не нужны? Так что огород-то городить.
Год високосный, если делится нацело на 4 кроме тех, что делятся нацело на 100 (с целым числом столетий но не делятся нацело на 400. Посмотри в инете определение если что.
По целой части определяешь високосный ли год, дробная часть твоих исходных данных умножается на 365 или 366 високосный сравнивается с табличкой больше какого - узнаёшь месяц
строится заранее табличка 0-х дней месяца для невисокосного и високосного разные
Типа
0 Jan = 0
0 Feb = 31
0 Mar = 31+28) или для високосного 31+29
0 Apr = 31+28+31 или для високосного 31+29+31
и т.д.
Далее вычитая из одного 0-й день месяца узнаешь по целой части день
У множая дробную часть на 24 получишь целую часть часы, дробную опять умножаешь на 60 - продолжать?

Ivan8209

> Ну так сам набей.
Умный человек сначала прочитает "apropos date".
---
"Vyroba umelych lidi, slecno, je tovarni tajemstvi."

Dasar

> Нужно абсолютно точно перевести дату, вплоть до секунд
точную формулу я тебе привел, забивай в excel - да считай.

katrin2201

А если взять юниксовое время начала года, конца года, вычесть из одного другое, помножить на дробную часть - прокатит? =)
Оставить комментарий
Имя или ник:
Комментарий: