将带有毫秒和时区的JavaScript日期发送到Java webservice

时间:2017-09-07 11:56:44

标签: javascript java jquery html date

我需要将UI上的当前日期作为http请求标头发送到基于Java的webservice,但面临问题,因为javascript new Date方法隐藏了从日期开始的毫秒数据并将其转发到Web服务。

console.log(new Date())
LOGS - Thu Sep 07 2017 14:47:37 GMT+0530 (India Standard Time)

毫秒信息不存在。但是,我需要在日期类型中Java Web服务也将其视为Date而不是字符串。我读到了关于momentjs格式的方法,但基本上返回一个字符串而不是日期。

我需要的是:Thu Sep 07 2017 15:10:46:955GMT+0530 (India Standard Time)

2 个答案:

答案 0 :(得分:1)

ECMAScript日期基于自1970-01-01T00:00:00Z以来的毫秒时间值,因此它们本身就是UTC。因此返回的值为:

let itemsFromList2 = realm.objects(ShoppingList.self).filter("listName = 'List 2' ").first?.itemList.filter("productName == %@", myFruit)

不需要时区,包括毫秒精度。您还可以使用 toISOString 返回ISO 8601扩展日期(毫秒),再次使用UTC,例如2017-09-07T22:51:51.287Z

ISO格式被广泛接受,方便人类阅读并且是明确的。

但是,如果同时传达源的时区也很重要,您可以使用时区偏移量(以分钟为单位返回以添加到本地时间以获取UTC)并将其格式化为更标准的值。



new Date().getTime();
// or more concisely
Date.now();




答案 1 :(得分:0)

如果你可以使用纯毫秒,你可以使用这样的东西:

Date.now(); // 1504785573971

几乎适用于所有现代浏览器。它没有告诉你用户的时区,但它确实给你一个一致的数字来比较(自1970年1月1日午夜以来的毫秒数,GMT)。

对于您寻求的非常具体的时间戳,您可能需要一个像moment.js这样的库 - 这是一个非常重的解决方案,但可以很好地控制格式化。

这个将是一个字符串,因为在JSON中传递日期没有真正商定的形式。它需要在Java中解析逻辑。我在Java方面没有太多经验,但我相信像Jackson和GSON这样的流行库支持这种转换。

如果您没有使用JSON向服务器提交信息,那么正常的表单提交将作为字符串传递,无论如何都必须在服务器上进行解析。