3

我需要从日历中选择一个未来的日期,假设我选择的日期是 2013 年 4 月 30 日。现在我想要的是将日期发送到服务器。在服务器端,我需要计算未来日期和当前日期之间的天数并将其发送到数据库。

问题是,当我在本地进行计算时(因为我的服务器和浏览器在同一个时区),它工作正常,但是当服务器与浏览器处于不同的时区时,天数的差异并没有像预期的那样出现。有人请帮助我如何解决时区问题。

4

2 回答 2

0

时差偏移

您应该使用一种格式来发送包含时区的数据。你可以:

  1. 在 GMT 00 中使用不使用时区(自纪元以来的毫秒数)的 UNIX 时间,并在 java 端使用它

请参阅: 以秒为单位获取当前日期/时间

  1. 使用 ISO-8601 这是一个标准并且可以包括浏览器的时区,然后解析这个服务器端:

看:

计算差异(使用 MS 和日历对象)

您需要使用日历对象。您创建一个日历对象并设置未来日期:例如,如何将 Java.util.calendar 设置为未来的特定时间段 然后您可以通过将当前日期(如长)与返回的 long 相减来执行计算日历,除以 (1000*60*60*24)。

我在自己的应用程序中使用的一些代码来查找大于特定日期时间(午夜)的条目:

long currentTimeStamp = System.currentTimeMillis();
Calendar cal;
cal = Calendar.getInstance();
cal.setTime(new Date(currentTimeStamp));

//GET MS OF MIDNIGHT FROM BEGINNING OF THE DAY
cal.set(Calendar.HOUR_OF_DAY, 0); cal.set(Calendar.MINUTE, 0); cal.set(Calendar.SECOND, 0); cal.set(Calendar.MILLISECOND,0);
long midnight = cal.getTimeInMillis();
if(currentTimeStamp - midnight > (30*24*60*60*1000))break;
于 2013-04-17T09:30:32.757 回答
0

将两个日期转换为一个共同的时区,例如 GMT,然后计算差异。

于 2013-04-17T09:33:04.637 回答