Как установить все нули в экземпляре Timestamp в Java?

1

Мне нужно было установить все нули в экземпляре 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
  • 0
    @TAsk: месяц 00 - январь
  • 1
    Можете ли вы объяснить свой вопрос? Все нули в году означают год ноль, что означает приблизительное время рождения Христа.
Показать ещё 9 комментариев
Теги:
timestamp
initialization

4 ответа

3
Лучший ответ

Невозможно создать экземпляр 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.

  • 0
    Спасибо за вашу поддержку.
1

'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());
    }
 }
}
  • 0
    это то, что я пытаюсь сказать здесь
0

Быстрая проверка документации java.sql.Timestamp показывает, что Class - Timestamp поддерживает только следующие значения параметров:

  • год - год минус 1900 год
  • месяц - от 0 до 11
  • дата - от 1 до 31
  • час - от 0 до 23
  • минута - от 0 до 59
  • второй - от 0 до 59
  • nano - от 0 до 999 999 999

Итак, ответ на ваш вопрос заключается в том, что вы не можете установить значение: 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-й день (и не 0-й год в зависимости от вашего календаря). Если вы хотите изменить способ печати меток времени, вы можете сделать это

Timestamp ts = new Timestamp(Long.MIN_VALUE) {
    public String toString() {
        return "0000-00-00 00:00:00.0";
    }
};

Это напечатает то, что вы ожидаете.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню