Например, вот такая дата со временем: 2017.01.12 22:44:0.9999
То конвертируем это все в секунды: 3600 * 22 + 60 * 44 + 0.9999
И вот секунды представлены в Float значении.
И как мне это перевести в unix?
'Unix time' -- это не вещественное, а целое число. Самый естественный способ получить из вещественного значения целое - это округлить его. Можно, конечно, не округлять, а отбрасывать дробную часть, но при этом будет получаться время, отстающее от действительного в среднем на полсекунды. Округление:
double doubleTime = 3600 * 22 + 60 * 44 + 0.9999;
long unixTime = Math.round(doubleTime);
Другой вопрос, что в Java намного чаще употребляется время в миллисекундах, чем в секундах -- есть множество классов и методов для работы со временем в таком виде, например для преобразования такого времени в строку в нужном формате. Если вы предпочтете использовать такое представление времени, то это можно делать вот так:
double doubleTimeMs = (3600 * 22 + 60 * 44 + 0.9999) * 1000; // в миллисекундах
long javaTime = Math.round(doubleTimeMs);
String thatTime = new SimpleDateFormat("dd.MM.yyyy HH:mm:ss").format(javaTime);
System.out.println("That time was " + thatTime);
long now = System.currentTimeMillis();
System.out.println("Now is "
+ new SimpleDateFormat("dd.MM.yyyy HH:mm:ss").format(now);
Unix timestamp исчисляется с точностью до секунд(миллисекунд) и отсчитывается с полуночи 1 января 1970 года.
Т.е. для 2017.01.12 22:44:0.9999 (считаем, что это Гринвич, чтобы временными зонами не заморачиваться), будет так
Составляющая от годов: (2017 - 1970) * 31536000 = 1482192000 (необходима поправка на високосные года)
Месяц тут не сыграет (и слава богу)
Составляющая от дней: 12 * 86400 = 1036800
Составляющая от часов и минут: 22 * 3600 + 44 * 60 = 81840
Итого: 1484174640 секунд (Это без учета високосных лет и прочих корректировок)
Теперь с секундами. Есть два пути:
1) Если вам нужна временная метка в секундах, то нецелое значение можно округлить Math.round() (или отбросить, например Math.floor())
2) Использовать таймштамп в миллисекундах. Тогда как-то так:
Long timestamp = 1484174640 * 1000 + Math.round(0.9999 * 1000);
Но в целом, это очередное изобретение велосипеда. Для Java есть большое количество библиотек(включая стандартную), которые позволяют корректно работать с датами практически в любых форматах.
Как развивать веб-проекты в 2026 году: технологии, контент E-E-A-T и факторы доверия
Современные инструменты для криптотрейдинга: как технологии помогают принимать решения
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники