diff --git a/src/main/java/com/alibaba/fastjson/util/TypeUtils.java b/src/main/java/com/alibaba/fastjson/util/TypeUtils.java index 1e8027845..4a0888073 100755 --- a/src/main/java/com/alibaba/fastjson/util/TypeUtils.java +++ b/src/main/java/com/alibaba/fastjson/util/TypeUtils.java @@ -707,7 +707,8 @@ public class TypeUtils{ } } } - if(longValue <= 0){ + + if(longValue < 0){ throw new JSONException("can not cast to Timestamp, value : " + value); } return new java.sql.Timestamp(longValue); diff --git a/src/test/java/com/alibaba/json/bvt/parser/TypeUtilsTest.java b/src/test/java/com/alibaba/json/bvt/parser/TypeUtilsTest.java index fb6e118db..e0d72a600 100755 --- a/src/test/java/com/alibaba/json/bvt/parser/TypeUtilsTest.java +++ b/src/test/java/com/alibaba/json/bvt/parser/TypeUtilsTest.java @@ -3,6 +3,7 @@ package com.alibaba.json.bvt.parser; import java.lang.reflect.Method; import java.math.BigDecimal; import java.math.BigInteger; +import java.sql.Timestamp; import java.util.ArrayList; import java.util.Calendar; import java.util.Date; @@ -243,6 +244,10 @@ public class TypeUtilsTest extends TestCase { Assert.assertEquals(null, TypeUtils.castToTimestamp(null)); } + public void test_cast_to_Timestamp_1970_01_01_00_00_00() throws Exception { + Assert.assertEquals(new Timestamp(0), TypeUtils.castToTimestamp("1970-01-01 08:00:00")); + } + public void test_cast_to_BigDecimal_same() throws Exception { BigDecimal value = new BigDecimal("123"); Assert.assertEquals(true, value == TypeUtils.castToBigDecimal(value));