struts2之Date Time Timestamp

好久没写博客了。最近做了不少东西,今天选一部分总结一下。


        用struts2为框架,写了一个信息发布系统。这里没有用Spring和Hiberate,数据库用MySQL。


        主要功能:首页登录,首页展示所有已发信息的主题、摘要、评论数、发布者、发布时间。若登录用户为管理员,则首页每项对应增加删除和修改功能。


        进入某主题文章,显示文章全部内容,其后是所有评论信息,最后是一个提交新评论的表单。管理员有修改文章、删除某评论的权限。对重复登录做了检测。


        点击主题,链接到showDetail.action?index=${id},其中${id}为主页显示所有信息的动作类NoticePublish.action通过JavaBean传入的文章主题的数据库id。由于在struts2.1以后不再支持EL表达式和struts-tag的混用,所以这里和后面很多传值的地方纠结了很久。 showDetail.action的结果如果为"success",则进入showDetail.jsp?index=${index}页面,显示全部信息、评论,以及提交新评论。

        这里主要记录一下让人无比纠结的java.util.Date类的写入、读出数据库,以及显示的问题。
数据库中与日期时间相关的数据类型有date,time,datetime,timestamp。
date只记录日期,time只记录时间(相信不会有人只记录日期而不记录时间的),datetime记录日期和时间,timestamp记录时间戳。这里我选择datetime,其实他可以记录的时间进度和timestamp是一样的,都是精确到毫秒。

        在对应JavaBean中,日期时间这一项对应的类就是java.util.Date。他可以和数据库的datetime对应使用。

在查询数据库的动作类中,写入记录时,先生成当前时间的时间戳:

更新语句不要用setDate(),用setTimestamp():

读出的时候,用getTimestamp():

其实一开始还用了另外一种解决办法,就是把datetime当做string写入数据库,很容易实现,但后来发现要比较日期就跪了。所以还是用上面的方法。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Java提供了几种处理日期和时间的类:`Date`、`LocalDate`、`LocalTime`、`LocalDateTime`、`ZonedDateTime`等等。其中,`Date`类是旧版本的日期时间类,而其他类是Java 8引入的新日期时间API。 `Date`类表示特定的日期和时间,但它在处理日期和时间时存在一些问题,因此在新的Java日期时间API中被废弃。推荐使用`LocalDate`、`LocalTime`和`LocalDateTime`类来处理日期和时间。 `LocalDate`类表示一个没有时区信息的日期,包含年、月、日信息。 `LocalTime`类表示一个没有日期信息的时间,包含时、分、秒和毫秒信息。 `LocalDateTime`类表示一个包含日期和时间的对象。 另外,如果你需要处理带有时区的日期和时间,可以使用`ZonedDateTime`类。 关于时间戳(timestamp),在Java中可以使用`Instant`类来表示。`Instant`类代表从1970年1月1日开始计数的秒数或纳秒数。你可以使用该类来表示一个特定的时间点。 以下是一个示例代码,演示了如何在Java中处理日期和时间: ```java import java.time.LocalDate; import java.time.LocalTime; import java.time.LocalDateTime; import java.time.ZonedDateTime; import java.time.Instant; public class DateTimeExample { public static void main(String[] args) { // 获取当前日期 LocalDate currentDate = LocalDate.now(); System.out.println("Current Date: " + currentDate); // 获取当前时间 LocalTime currentTime = LocalTime.now(); System.out.println("Current Time: " + currentTime); // 获取当前日期和时间 LocalDateTime currentDateTime = LocalDateTime.now(); System.out.println("Current Date and Time: " + currentDateTime); // 获取带时区的日期和时间 ZonedDateTime zonedDateTime = ZonedDateTime.now(); System.out.println("Zoned Date and Time: " + zonedDateTime); // 获取当前时间戳 Instant timestamp = Instant.now(); System.out.println("Timestamp: " + timestamp);

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值