js和java前后端传递Date类型数据的问题


1、后端 => 前端

 由下述代码可知:后端java的Date类型数据传递到前端,输出格式为 yy-mm-dd hh-mm-ss,可以直接把它作为参数放进 js 的 new Date( ) 里,得到的就是正确的js格式的Date:

const date = new Date(this.userInfo.birthday)
const date01 = new Date(this.userInfo.createTime)

console.log(this.userInfo.createTime)
console.log(this.userInfo.birthday)

console.log(date)
console.log(date01)

--------------------------------------------------------------------------------

java后端未经处理的date类型(MySql中为datetime): 2021/03/07 22:58:44
java后端未经处理的date类型(MySql中为date): 2013/07/12 00:00:00

java后端未经处理的date类型(MySql中为datetime)作为构造函数的参数:Fri Jul 12 2013 00:00:00 GMT+0800 (中国标准时间)
java后端未经处理的date类型(MySql中为date)的时间戳作为构造函数的参数:Sun Mar 07 2021 22:58:44 GMT+0800 (中国标准时间)



 一些关于js中Date对象构造函数的参数类型如下述代码所示,当然还有没写上去的时间戳:

const date01 = new Date(2021, 3, 20)
const date02 = new Date('2021-03-05')
const date03 = new Date('2021-3-5')
const date04 = new Date('2021/3/5')
const date05 = new Date('2021/03/05')
const date06 = new Date('2021/03/05 01:01:01')
const date07 = new Date('2021-03-05 1:1:1')

--------------------------------------------------------------------------------

date01 (2021, 3, 20) : Tue Apr 20 2021 00:00:00 GMT+0800 (中国标准时间)
date02 ('2021-03-05') : Fri Mar 05 2021 08:00:00 GMT+0800 (中国标准时间)
date03 ('2021-3-5') : Fri Mar 05 2021 00:00:00 GMT+0800 (中国标准时间)
date04 ('2021/3/5') : Fri Mar 05 2021 00:00:00 GMT+0800 (中国标准时间)
date05 ('2021/03/05') : Fri Mar 05 2021 00:00:00 GMT+0800 (中国标准时间)
date06 ('2021/03/05 01:01:01') : Fri Mar 05 2021 01:01:01 GMT+0800 (中国标准时间)
date07 ('2021-03-05 1:1:1') : Fri Mar 05 2021 01:01:01 GMT+0800 (中国标准时间)


2、前端 => 后端

 前端Date类型传递到后端我用的是传递时间戳的方法,后端Date类型的参数可以成功接收。

 前端输出的requst请求中传递了时间戳:
在这里插入图片描述

 java后端成功接收并输出

//java控制台输出
//User(...... , birthday=Fri Jul 12 00:00:00 CST 2013, ......)



因为js和java的Date的规范不同,直接传递是不行的。目前只想到了时间戳的办法,大家如果有别的好办法请在评论区指教我下,非常感谢。


  • 10
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
要修改`date`的值并且将其传递给后台,可以使用JavaScript的`Date`对象和AJAX技术。 首先,创建一个`Date`对象来代表我们要传递的日期。可以使用`new Date()`构造函数创建一个当前的日期对象。 ```javascript var currentDate = new Date(); ``` 接下来,使用`set`方法来修改日期的值。例如,如果要将日期设置为一个特定的年份、月份和日期,可以使用`setFullYear()`、`setMonth()`和`setDate()`方法。 ```javascript currentDate.setFullYear(2022); currentDate.setMonth(0); // 月份从0开始,0表示一月 currentDate.setDate(1); ``` 然后,可以将修改后的日期传递给后台。可以使用AJAX技术将数据以POST或GET方式发送到后台服务器。这里以POST方式为例: ```javascript var xmlhttp = new XMLHttpRequest(); xmlhttp.onreadystatechange = function() { if (xmlhttp.readyState == 4 && xmlhttp.status == 200) { // 请求成功后执行的操作 console.log(xmlhttp.responseText); } }; xmlhttp.open("POST", "backend_url", true); xmlhttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded"); xmlhttp.send("date=" + currentDate.toISOString()); ``` 以上代码创建了一个XMLHttpRequest对象,定义了请求完成后执行的回调函数。然后,使用`open()`方法指定请求的类型、URL和是否异步。通过`setRequestHeader()`方法设置请求头的Content-Type为`application/x-www-form-urlencoded`。最后,使用`send()`方法将日期及其对应的值作为参数发送到后台。 后台接受到前发送的请求后,可以通过相应的服务器的编程语言(如PHP、Java等)来获取到传递的日期值,并进行相应的处理。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值