Это не вопрос, не относящийся к языку. Java и Javasript и каждая реализация SQL, которую я когда-либо использовал, например, имеют функции сравнения даты и времени, которые работают очень хорошо. Если язык или платформа, которые вы используете, нет, вы должны сказать нам, что они для кого-то, чтобы сказать вам, какой правильный вызов функции использовать или как работать вокруг какой-то идиосинкратии. Да, многие языки имеют тип данных даты/времени, но это не делает язык вопроса нейтральным. У большинства языков есть способ вывода текста на экран, но это не делает его законным, чтобы спросить: «Как написать текстовую строку на экране на нейтральном языке?» На такой вопрос нет ответа.
Я понятия не имею, что вы подразумеваете под «это только сравнение по последнему сравнению». Опять же, вы, по-видимому, ссылаетесь на поведение какой-либо конкретной функции сравнения на определенном языке. Вы должны быть более конкретными, чтобы получить осмысленный ответ.
Редактировать в ответ на ваш комментарий: разные языки имеют разные способы хранения дат. В Java, чтобы посмотреть, не указана ли дата/время за другим, вы пишете «date1.after (date2)» или «date1.compareTo (date2)> 0». В Postgres SQL вы пишете «date1> date2» или «date1 :: timestamp> date2 :: timestamp» в зависимости от определений типов. В C существует множество «правильных» способов, включая «difftime (date1, date2)». Etc и т. Д.
Ответ Аарона выше логически корректен, но не имеет отношения к тому, как вы фактически сравниваете даты на любом используемом мне языке.Если у вас есть даты, хранящиеся в виде набора целых чисел для каждого из этих компонентов (год, месяц, день и т. Д.), Убедитесь, что это сработает. Но я не знаю ни одного языка, который хранит даты таким образом.
Если у вас есть причина иметь собственный формат для хранения дат и разбить их на такие компоненты, как это полезно для вашего приложения, то я полагаю, что техника Аарона верна. Но очень маловероятно, что это полезный формат. Внутри Java хранит дату/время с количеством миллисекунд с полуночи, 1 января 1970 года. C использует количество секунд. Я уверен, что другие языки используют другие схемы.
Вы можете, конечно, писать псевдонимы, нейтральные по языку, для сравнения двух дат, так же, как вы могли бы писать псевдонимы, нейтральные для языка, для описания записи на экран. Если ваша цель - отвлечь технические детали языка, когда вы работаете над большой проблемой, отлично. Но если ваша цель - фактически сравнить две даты и найти, что позже или сколько дней между ними, тогда ответ заключается в технических подробностях того, как определенный язык, который вы используете, хранит и манипулирует датами.
Я думаю, что это слишком широкий вопрос с учетом местностей и форматов даты и времени. Какую проблему ты пытаешься решить? –
Я не верю своему языковому агностику, потому что я успешно сравнивал даты на разных языках. Вероятно, это локальная проблема вашего языка или реализации. – Sejanus
Вы хотите сравнить только часть времени? –