我正在使用以下代码在java中生成unix时间戳。
Date d1=new Date();
System.out.println(new Timestamp(d1.getTime()));
System.out.println(d1.getTime());
这将给我输出1382016125183(2013-10-17 18:52:05.183日期)
现在我想在informix中使用完全相同的时间戳,所以我使用以下存储过程来生成时间戳:
CREATE PROCEDURE to_unix_time(d DATETIME YEAR TO FRACTION(5)
DEFAULT CURRENT YEAR TO FRACTION(5))
RETURNING DECIMAL(18,5);
DEFINE n DECIMAL(18,5);
DEFINE i1 INTERVAL DAY(9) TO DAY;
DEFINE i2 INTERVAL SECOND(6) TO FRACTION(5);
DEFINE s1 CHAR(15);
DEFINE s2 CHAR(15);
LET i1 = EXTEND(d, YEAR TO DAY) - DATETIME(1970-01-01) YEAR TO DAY;
LET s1 = i1;
LET i2 = EXTEND(d, HOUR TO FRACTION(5)) -
DATETIME(00:00:00.00000) HOUR TO FRACTION(5);
LET s2 = i2;
LET n = s1 * (24 * 60 * 60 * 1000) + s2;
RETURN n;
END PROCEDURE;
我在这个程序中输入与java相同的日期。但它会为2013-10-17 18:52:05.183生成错误的时间戳1381968067925。
我希望两种情况下两个时间戳都相同 - 我该怎么做?
答案 0 :(得分:0)
这两个结果之间的差异是48057258.将其除以60/60/1000,看起来差不多是13个小时。这可能是时区的问题吗?您的常规之一是使用UTC而另一个是本地TZ吗?