问题在java中获取未来日期和当前日期之间的天数差异

时间:2013-04-17 09:20:43

标签: java javascript

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

问题在于,当我在本地进行计算时(因为我的服务器和浏览器在同一时区),它可以正常工作,但是当服务器与浏览器处于不同的时区时,天数的差异不会达到预期。有人请帮我解决时区问题。

2 个答案:

答案 0 :(得分:0)

抵消时差

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

  1. 使用不使用时区的UNIX时间(自纪元以来的毫秒数)和GMT 00,并在java端使用此
  2. 请参阅: Get current date/time in seconds

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

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

      您需要使用日历对象。 您创建一个日历对象并设置未来日期:例如How to set Java.util.calendar to a specific time period in the future 然后,您可以通过使用日历返回的长度减去当前日期(一样长)并除以(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;
      

答案 1 :(得分:0)

在一个公共时区中转换两个日期,例如GMT然后计算差异。