加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

在Java / MySQL中没有时间或时区组件的日期

发布时间:2020-12-15 01:10:11 所属栏目:Java 来源:网络整理
导读:我需要能够存储没有时间组件的日期(年/月/日).这是一个日期的抽象概念,例如生日 我需要代表一年中的日期而不是特定的时刻. 我使用Java从一些输入文本解析日期,并需要存储在MySQL数据库中.无论数据库,应用程序或任何客户端处于什么时区,他们都应该看到相同的

我需要能够存储没有时间组件的日期(年/月/日).这是一个日期的抽象概念,例如生日 – 我需要代表一年中的日期而不是特定的时刻.

我使用Java从一些输入文本解析日期,并需要存储在MySQL数据库中.无论数据库,应用程序或任何客户端处于什么时区,他们都应该看到相同的年/月/日.

我的应用程序将在具有与数据库服务器不同的系统时区的计算机上运行,??而我无法控制.有没有人有一个优雅的解决方案,以确保我正确存储日期?

我可以想到这些解决方案,这些解决方案看起来都不是很好:

>查询我的MySQL连接的时区并解析该时区的输入日期
>将日期完全作为字符串yyyy-MM-dd处理

最佳答案
您可以将所有时间/时区内容归零:

public static Date truncateDate(Date date)
    {
        GregorianCalendar cal = getGregorianCalendar();
        cal.set(Calendar.ZONE_OFFSET,0); // UTC
        cal.set(Calendar.DST_OFFSET,0); // We don't want DST to get in the way.

        cal.setTime(date);
        cal.set(Calendar.MILLISECOND,0);
        cal.set(Calendar.SECOND,0);
        cal.set(Calendar.MINUTE,0);
        cal.set(Calendar.HOUR,0);
        cal.set(Calendar.AM_PM,Calendar.AM);

        return cal.getTime();
    }

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读