繁体   English   中英

Google Android API 10 2.3.3的java.sql.Timestamp实现

[英]java.sql.Timestamp implementation of Google Android API 10 2.3.3

码:

import java.sql.Timestamp;
Timestamp startTimestamp = new Timestamp(2012, 1, 1, 0, 0, 0, 0);
System.out.println("startTimestamp = " + startTimestamp);
System.out.println("startTimestamp.getYear() = " + startTimestamp.getYear());

输出:

startTimestamp = 3912-02-01 00:00:00.0
startTimestamp.getYear() = 2012

是错误还是我做错了什么?

Javadoc说:

参数: year-减去1900的年份

因此,2012 + 1900 = 3912。

请注意, new Timestamp(2012, 1, 1, 0, 0, 0, 0); 已弃用,我认为这是您问题的根源!

使用Timestamp startTimestamp = new Timestamp(System.currentTimeMillis()); 代替。

另外,请注意, startTimestamp.getYear()也已弃用!

不推荐使用。 从JDK版本1.1开始,由Calendar.get(Calendar.YEAR)取代。

返回此Date对象表示的月份中的一天。 返回的值在1到31之间,代表包含该Date对象所表示的时刻或从该时刻开始的月份中的某天,如当地时区所解释。

考虑以下示例(基于您的原始代码):

public static void main(String[] args)
{
    Calendar cal = Calendar.getInstance();
    cal.set(Calendar.DAY_OF_YEAR, 1);
    cal.set(Calendar.MONTH, 1);
    cal.set(Calendar.HOUR, 0);
    cal.set(Calendar.MINUTE, 0);
    cal.set(Calendar.SECOND, 0);
    cal.set(Calendar.MILLISECOND, 0);
    Timestamp startTimestamp = new Timestamp(cal.getTimeInMillis());
    System.out.println("startTimestamp = " + startTimestamp);
    Calendar cal2 = Calendar.getInstance();
    cal2.setTimeInMillis(startTimestamp.getTime());
    System.out.println("Year = " + cal2.get(Calendar.YEAR));
}

它将产生输出:

startTimestamp = 2012-01-01 12:00:00.0
Year = 2012

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM