java.sql.Timestamp的格式String转换

本文介绍了如何在Java中使用Timestamp来记录日期时间,并在显示时避免显示毫秒位,通过自定义SimpleDateFormat格式实现Timestamp到String的转换,以及String到Timestamp的反向转换。

 用Timestamp来记录日期时间还是很方便的,但有时候显示的时候是不需要小数位后面的毫秒的,这样就需要在转换为String时重新定义格式。

Timestamp转化为String:

SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");//定义格式,不显示毫秒 

Timestamp now = new Timestamp(System.currentTimeMillis());//获取系统当前时间 

String str = df.format(now);

 

String转化为Timestamp:

SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String time = df.format(new Date());

Timestamp ts = Timestamp.valueOf(time);

### 解决方案 在 Java 中,`java.sql.Timestamp` 和 `java.lang.String` 是两种不同的数据类型。直接比较这两种类型的对象会导致编译错误或运行时异常。为了修复这种无效的比较问题,可以采用以下方法之一: #### 方法一:将 Timestamp 转换String 进行比较 如果需要基于字符串形式进行比较,则可以通过调用 `Timestamp.toString()` 将时间戳转换为字符串后再执行比较操作。 ```java import java.sql.Timestamp; public class CompareExample { public static void main(String[] args) { Timestamp timestamp = new Timestamp(System.currentTimeMillis()); String strTime = "2023-10-05 12:00:00"; // Convert Timestamp to String boolean isEqual = timestamp.toString().equals(strTime); System.out.println("Are they equal? " + isEqual); // Output based on equality check } } ``` 这种方法适用于仅需简单匹配的情况[^1]。 #### 方法二:将 String 转换Timestamp 后再比较 另一种方式是先将字符串解析为 `Timestamp` 对象,然后再进行比较。这通常通过 `SimpleDateFormat` 或其他日期处理工具完成。 ```java import java.text.ParseException; import java.text.SimpleDateFormat; import java.sql.Timestamp; public class CompareExample { public static void main(String[] args) throws ParseException { Timestamp timestamp = new Timestamp(System.currentTimeMillis()); String strTime = "2023-10-05 12:00:00"; SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); Timestamp parsedTimestamp = new Timestamp(sdf.parse(strTime).getTime()); boolean isEqual = timestamp.equals(parsedTimestamp); System.out.println("Are they equal? " + isEqual); // Output based on equality check } } ``` 此方法更适合于涉及复杂逻辑的时间对比场景[^2]。 #### 方法三:使用 compareTo() 函数实现精确比较 对于更精细的时间顺序判断,推荐利用 `compareTo()` 方法来代替简单的相等性测试。该函数返回负数表示前者小于后者;零意味着两者相同;正数值则表明第一个参数大于第二个参数。 ```java import java.sql.Timestamp; public class CompareExample { public static void main(String[] args){ Timestamp t1 = new Timestamp(1696478400000L); // Example time value Timestamp t2 = Timestamp.valueOf("2023-10-05 12:00:00"); int result = t1.compareTo(t2); if(result < 0){ System.out.println("t1 is before t2."); }else if(result == 0){ System.out.println("t1 equals t2."); }else{ System.out.println("t1 is after t2."); } } } ``` 以上三种策略均可有效解决 `java.sql.Timestamp` 和 `java.lang.String` 的不兼容比较问题[^1]^。 ### 注意事项 当涉及到数据库交互或者外部输入的数据验证时,请务必考虑潜在的安全隐患比如SQL注入等问题,并采取相应的防护措施如预编译语句PreparedStatement等技术手段加以规避.
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值