Мне нужно было установить все нули в экземпляре Timestamp.
Вот код, который я пробовал
import java.sql.Timestamp;
public class UI
{
public static void main(String args[])
{
Timestamp timestamp = Timestamp.valueOf("0000-00-00 00:00:00.0");
System.out.println(timestamp);
}
}
Он показывает результат
0002-11-30 00:00:00.0
Как установить значение метки времени, чтобы выход показывал
0000-00-00 00:00:00.0
Невозможно создать экземпляр Timestamp
до 0000-00-00 00:00:00
. valueOf
вызывает конструктор, который в исходном коде имеет следующие javadocs (взятые из официального javadocs API):
Constructs a Timestamp object initialized with the given values.
Deprecated: instead use the constructor Timestamp(long millis)
Parameters:
year the year minus 1900
month 0 to 11
date 1 to 31
hour 0 to 23
minute 0 to 59
second 0 to 59
nano 0 to 999,999,999
Параметр даты должен иметь значение между 1-31.
'0000-00-00 00:00:00'
не может быть представлен как java.sql.Timestamp
Попробуй это
public class Test {
public static void main(String[] args) {
try {
String[] s = {"0001-01-01 00:00:00.0", "0000-00-00 00:00:00"};
for (String value : s) {
Timestamp t = Timestamp.valueOf(value);
System.out.println(t.toString() + ", " + t.getTime());
}
} catch (Exception e) {
System.out.println(e.getMessage());
}
}
}
Быстрая проверка документации java.sql.Timestamp показывает, что Class - Timestamp поддерживает только следующие значения параметров:
Итак, ответ на ваш вопрос заключается в том, что вы не можете установить значение: 0000-00-00 00:00:00.0
Однако вы можете установить значение часа, минуты, секунды и наносекунда до 00:00:00.0
.
Могли ли вы успешно выполнить свой код? Выполнение кода привело к:
Исключение в потоке "main" java.lang.IllegalArgumentException: формат временной отметки должен быть yyyy-mm-dd hh: mm: ss [.fffffffff] в java.sql.Timestamp.valueOf (Неизвестный источник)Нет 0-го месяца, который имеет 0-й день (и не 0-й год в зависимости от вашего календаря). Если вы хотите изменить способ печати меток времени, вы можете сделать это
Timestamp ts = new Timestamp(Long.MIN_VALUE) {
public String toString() {
return "0000-00-00 00:00:00.0";
}
};
Это напечатает то, что вы ожидаете.