【问题标题】:Issue getting the days difference between future date and current date in java在java中获取未来日期和当前日期之间的天数差异的问题
【发布时间】:2013-04-17 09:20:43
【问题描述】:

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

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

【问题讨论】:

  • 为什么不减去客户端上的日期?
  • 如何将日期发送到服务器?我的意思是什么格式?
  • @user2266098 这将违反 MVC 范式。
  • 您的问题对我来说并不完全清楚:您在客户端使用 javascript 而在服务器上使用 java ?
  • 好吧,您可以简单地将 utc 时间传递给生成日期并计算两者之间的天数的服务器。

标签: java javascript


【解决方案1】:

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

【讨论】:

    【解决方案2】:

    时差偏移

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

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

    见: Get current date/time in seconds

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

    见:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-04-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-11-01
      • 2019-04-23
      相关资源
      最近更新 更多