【问题标题】:Java difference of currentTimeMillis() Function and special date - MySQL?java - currentTimeMillis() 函数和特殊日期的区别 - MySQL?
【发布时间】:2011-08-06 15:30:37
【问题描述】:

我在数据库中有 50000 条这样的 XML 记录:

<?xml version="1.0" encoding="UTF-8"?>
<root>
<urlMD5>11ca7070ad6eb3180c53281e7b597976</urlMD5>
<date>
<year>2011</year>
<month>8</month>
<day>6</day>
<h>19</h>
<m>26</m>
<s>40</s>
</date>
<enc>utf-8</enc>
</root>

如您所见,我以分隔格式保存了日期。 现在我需要提取这些天的 currentTimeMillis() 并保存到新字段的数据库中。 所以我可以很容易地将它们与当前的 currentTimeMillis() 进行比较,并找出最近两天存储了哪些文档。 例如:

int ct = currentTimeMillis();

Class.forName("com.mysql.jdbc.Driver");
Connection conn = DriverManager.getConnection("jdbc:mysql://localhost/crawler?" + "user=root&password=&useUnicode=true&characterEncoding=UTF-8");
Statement stat = conn.createStatement();
ResultSet rs = st.executeQuery("SELECT * FROM DBName WHERE ct - 60 * 60 * 24 * 2 > timeField");

而且因为想用这个字段这么多次,所以想用一个简单的查询,不想每次都提取xml格式。

问题是 currentTimeMillis() 函数计算从 1970 年 1 月 1 日开始传递的 currentTimeMillis,我需要用我的数据计算相同的东西。 我已经用我之前用来存储 XML 数据的相同代码编写了以下代码,以确保我能做到这一点:

int s = 0;
s += (Calendar.getInstance().get(Calendar.YEAR) - 1970) * 60 * 60 * 24 * 365;
s += (Calendar.getInstance().get(Calendar.MONTH)) * 60 * 60 * 24 * 31;
s += (Calendar.getInstance().get(Calendar.DAY_OF_MONTH) * 60 * 60 * 24);
s += (Calendar.getInstance().get(Calendar.HOUR_OF_DAY) * 60 * 60);
s += (Calendar.getInstance().get(Calendar.MINUTE) * 60);
s += (Calendar.getInstance().get(Calendar.SECOND));
System.out.println(s);
System.out.println(System.currentTimeMillis() / 1000);

但结果不一样:

1312313680
1312643080

其中一个原因是因为不是每个月都有 31 天。

无论如何,我需要帮助来了解如何使用特殊日期而不是当前日期计算 currentTimeMillis?

我应该提到我正在使用 mysql,所以也许我可以将日期保存为特殊格式,以便与 SQL 查询进行比较?

【问题讨论】:

    标签: java mysql datetime


    【解决方案1】:

    使用日历的set方法:

    Calendar c = Calendar.getInstance();
    c.set(Calendar.YEAR, year);
    c.set(Calendar.MONTH, month);
    

    等等

    然后用c.getTime().getTime()提取毫秒数。

    【讨论】:

    • 谢谢它的工作!完成后我应该重置日历吗?
    • 重置是什么意思?您可以多次重复使用同一个 Calendar 对象,前提是您不要忘记设置它的每个字段,从年到毫秒。
    猜你喜欢
    • 2012-01-04
    • 1970-01-01
    • 2015-11-11
    • 1970-01-01
    • 1970-01-01
    • 2019-01-31
    • 2014-02-18
    • 2016-03-01
    • 1970-01-01
    相关资源
    最近更新 更多