如何在java中的Timestamp实例中设置所有零?

时间:2014-07-09 07:45:34

标签: java initialization timestamp

我需要在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

如何设置Timestamp的值以便输出显示

0000-00-00 00:00:00.0

4 个答案:

答案 0 :(得分:3)

无法将Timestamp实例化为0000-00-00 00:00:00 valueOf调用构造函数,源代码中包含以下javadoc(取自offical 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之间。

答案 1 :(得分: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());
    }
 }
}

答案 2 :(得分:0)

没有第0个月有第0天(根据您的日历,没有第0年)。如果要更改时间戳打印的方式,可以执行此操作

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

这将以您期望的方式打印。

答案 3 :(得分:0)

java.sql.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] at java.sql.Timestamp.valueOf(Unknown Source)