我有一个表存储unix时间和等效时间戳的表.
CREATE TABLE tbl_time
(
time_unix BIGINT,
time_timestamp TIMESTAMP WITHOUT TIME ZONE
);
Run Code Online (Sandbox Code Playgroud)
数据库在PostgreSQL中.数据库已配置Asia/Tehran时区.例如:
1333436817, 2012-04-03 11:36:57
Run Code Online (Sandbox Code Playgroud)
当我将unix时间转换为python中的字符串格式时:
datetime.datetime.fromtimestamp(1333436817)
Run Code Online (Sandbox Code Playgroud)
它给了我:datetime.datetime(2012, 4, 3, 11, 36, 57)哪个是正确的,等于数据库.但是当我使用java进行这种转换时:
Calendar c = Calendar.getInstance(TimeZone.getTimeZone("Asia/Tehran"));
c.setTimeInMillis(1333436817 * 1000);
System.out.println(c.getTime());
Run Code Online (Sandbox Code Playgroud)
它给出:Sat Jan 24 06:12:35 IRST 1970.系统本身在Asia/Tehran时区下运行.我在Debian 6.0.5上使用PostgreSQL 8.4.11与python 3.1和openjdk 6.任何人都可以帮忙吗?
1333436817*1000的结果对于整数而言太大,因此它会溢出.在这种情况下,Java不会自动为您提升类型.
试试看:
c.setTimeInMillis(1333436817 * 1000L);
Run Code Online (Sandbox Code Playgroud)
请注意L,强制您的计算使用长整数.
| 归档时间: |
|
| 查看次数: |
1328 次 |
| 最近记录: |