Skip to content

Commit 536f11e

Browse files
committed
修复datetime组件时间戳生成错误
1 parent 5d367a3 commit 536f11e

File tree

3 files changed

+3
-17
lines changed

3 files changed

+3
-17
lines changed

web/public/js/components.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4915,7 +4915,7 @@ example2.com
49154915
<button class="ui button tiny" type="button" @click.prevent="create()">+</button>
49164916
</div>
49174917
</div>
4918-
</div>`}),Vue.component("datetime-input",{props:["v-name","v-timestamp"],mounted:function(){let t=this;teaweb.datepicker(this.$refs.dayInput,function(e){t.day=e,t.hour="23",t.minute="59",t.second="59",t.change()})},data:function(){let t=this.vTimestamp,i=(null!=t?(t=parseInt(t),isNaN(t)&&(t=0)):t=0,""),s="",n="",o="";if(0<t){let e=new Date;e.setTime(1e3*t);var a=e.getFullYear().toString(),l=this.leadingZero((e.getMonth()+1).toString(),2);i=a+"-"+l+"-"+this.leadingZero(e.getDate().toString(),2),s=this.leadingZero(e.getHours().toString(),2),n=this.leadingZero(e.getMinutes().toString(),2),o=this.leadingZero(e.getSeconds().toString(),2)}return{timestamp:t,day:i,hour:s,minute:n,second:o,hasDayError:!1,hasHourError:!1,hasMinuteError:!1,hasSecondError:!1}},methods:{change:function(){let e=new Date;var t,i;/^\d{4}-\d{1,2}-\d{1,2}$/.test(this.day)?(i=this.day.split("-"),t=parseInt(i[0]),e.setFullYear(t),(t=parseInt(i[1]))<1||12<t?this.hasDayError=!0:(e.setMonth(t-1),(t=parseInt(i[2]))<1||32<t?this.hasDayError=!0:(e.setDate(t),this.hasDayError=!1,/^\d+$/.test(this.hour)?(i=parseInt(this.hour),isNaN(i)||i<0||24<=i?this.hasHourError=!0:(this.hasHourError=!1,e.setHours(i),/^\d+$/.test(this.minute)?(t=parseInt(this.minute),isNaN(t)||t<0||60<=t?this.hasMinuteError=!0:(this.hasMinuteError=!1,e.setMinutes(t),/^\d+$/.test(this.second)?(i=parseInt(this.second),isNaN(i)||i<0||60<=i?this.hasSecondError=!0:(this.hasSecondError=!1,e.setSeconds(i),this.timestamp=Math.floor(e.getTime()/1e3))):this.hasSecondError=!0)):this.hasMinuteError=!0)):this.hasHourError=!0))):this.hasDayError=!0},leadingZero:function(t,i){if(i<=(t=t.toString()).length)return t;for(let e=0;e<i-t.length;e++)t="0"+t;return t},resultTimestamp:function(){return this.timestamp},nextDays:function(e){let t=new Date;t.setTime(t.getTime()+86400*e*1e3),this.day=t.getFullYear()+"-"+this.leadingZero(t.getMonth()+1,2)+"-"+this.leadingZero(t.getDate(),2),this.hour=this.leadingZero(t.getHours(),2),this.minute=this.leadingZero(t.getMinutes(),2),this.second=this.leadingZero(t.getSeconds(),2),this.change()},nextHours:function(e){let t=new Date;t.setTime(t.getTime()+3600*e*1e3),this.day=t.getFullYear()+"-"+this.leadingZero(t.getMonth()+1,2)+"-"+this.leadingZero(t.getDate(),2),this.hour=this.leadingZero(t.getHours(),2),this.minute=this.leadingZero(t.getMinutes(),2),this.second=this.leadingZero(t.getSeconds(),2),this.change()}},template:`<div>
4918+
</div>`}),Vue.component("datetime-input",{props:["v-name","v-timestamp"],mounted:function(){let t=this;teaweb.datepicker(this.$refs.dayInput,function(e){t.day=e,t.hour="23",t.minute="59",t.second="59",t.change()})},data:function(){let t=this.vTimestamp,i=(null!=t?(t=parseInt(t),isNaN(t)&&(t=0)):t=0,""),s="",n="",o="";if(0<t){let e=new Date;e.setTime(1e3*t);var a=e.getFullYear().toString(),l=this.leadingZero((e.getMonth()+1).toString(),2);i=a+"-"+l+"-"+this.leadingZero(e.getDate().toString(),2),s=this.leadingZero(e.getHours().toString(),2),n=this.leadingZero(e.getMinutes().toString(),2),o=this.leadingZero(e.getSeconds().toString(),2)}return{timestamp:t,day:i,hour:s,minute:n,second:o,hasDayError:!1,hasHourError:!1,hasMinuteError:!1,hasSecondError:!1}},methods:{change:function(){if(/^\d{4}-\d{1,2}-\d{1,2}$/.test(this.day)){var t=this.day.split("-"),i=parseInt(t[0]),s=parseInt(t[1]);if(s<1||12<s)this.hasDayError=!0;else{t=parseInt(t[2]);if(t<1||32<t)this.hasDayError=!0;else if(this.hasDayError=!1,/^\d+$/.test(this.hour)){var n=parseInt(this.hour);if(isNaN(n))this.hasHourError=!0;else if(n<0||24<=n)this.hasHourError=!0;else if(this.hasHourError=!1,/^\d+$/.test(this.minute)){var o=parseInt(this.minute);if(isNaN(o))this.hasMinuteError=!0;else if(o<0||60<=o)this.hasMinuteError=!0;else if(this.hasMinuteError=!1,/^\d+$/.test(this.second)){var a=parseInt(this.second);if(isNaN(a))this.hasSecondError=!0;else if(a<0||60<=a)this.hasSecondError=!0;else{this.hasSecondError=!1;let e=new Date(i,s-1,t,n,o,a);this.timestamp=Math.floor(e.getTime()/1e3)}}else this.hasSecondError=!0}else this.hasMinuteError=!0}else this.hasHourError=!0}}else this.hasDayError=!0},leadingZero:function(t,i){if(i<=(t=t.toString()).length)return t;for(let e=0;e<i-t.length;e++)t="0"+t;return t},resultTimestamp:function(){return this.timestamp},nextDays:function(e){let t=new Date;t.setTime(t.getTime()+86400*e*1e3),this.day=t.getFullYear()+"-"+this.leadingZero(t.getMonth()+1,2)+"-"+this.leadingZero(t.getDate(),2),this.hour=this.leadingZero(t.getHours(),2),this.minute=this.leadingZero(t.getMinutes(),2),this.second=this.leadingZero(t.getSeconds(),2),this.change()},nextHours:function(e){let t=new Date;t.setTime(t.getTime()+3600*e*1e3),this.day=t.getFullYear()+"-"+this.leadingZero(t.getMonth()+1,2)+"-"+this.leadingZero(t.getDate(),2),this.hour=this.leadingZero(t.getHours(),2),this.minute=this.leadingZero(t.getMinutes(),2),this.second=this.leadingZero(t.getSeconds(),2),this.change()}},template:`<div>
49194919
<input type="hidden" :name="vName" :value="timestamp"/>
49204920
<div class="ui fields inline" style="padding: 0; margin:0">
49214921
<div class="ui field" :class="{error: hasDayError}">

web/public/js/components.src.js

Lines changed: 1 addition & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -14636,30 +14636,25 @@ Vue.component("datetime-input", {
1463614636
},
1463714637
methods: {
1463814638
change: function () {
14639-
let date = new Date()
14640-
1464114639
// day
1464214640
if (!/^\d{4}-\d{1,2}-\d{1,2}$/.test(this.day)) {
1464314641
this.hasDayError = true
1464414642
return
1464514643
}
1464614644
let pieces = this.day.split("-")
1464714645
let year = parseInt(pieces[0])
14648-
date.setFullYear(year)
1464914646

1465014647
let month = parseInt(pieces[1])
1465114648
if (month < 1 || month > 12) {
1465214649
this.hasDayError = true
1465314650
return
1465414651
}
14655-
date.setMonth(month - 1)
1465614652

1465714653
let day = parseInt(pieces[2])
1465814654
if (day < 1 || day > 32) {
1465914655
this.hasDayError = true
1466014656
return
1466114657
}
14662-
date.setDate(day)
1466314658

1466414659
this.hasDayError = false
1466514660

@@ -14678,7 +14673,6 @@ Vue.component("datetime-input", {
1467814673
return
1467914674
}
1468014675
this.hasHourError = false
14681-
date.setHours(hour)
1468214676

1468314677
// minute
1468414678
if (!/^\d+$/.test(this.minute)) {
@@ -14695,7 +14689,6 @@ Vue.component("datetime-input", {
1469514689
return
1469614690
}
1469714691
this.hasMinuteError = false
14698-
date.setMinutes(minute)
1469914692

1470014693
// second
1470114694
if (!/^\d+$/.test(this.second)) {
@@ -14712,8 +14705,8 @@ Vue.component("datetime-input", {
1471214705
return
1471314706
}
1471414707
this.hasSecondError = false
14715-
date.setSeconds(second)
1471614708

14709+
let date = new Date(year, month - 1, day, hour, minute, second)
1471714710
this.timestamp = Math.floor(date.getTime() / 1000)
1471814711
},
1471914712
leadingZero: function (s, l) {

web/public/js/components/common/datetime-input.js

Lines changed: 1 addition & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -54,30 +54,25 @@ Vue.component("datetime-input", {
5454
},
5555
methods: {
5656
change: function () {
57-
let date = new Date()
58-
5957
// day
6058
if (!/^\d{4}-\d{1,2}-\d{1,2}$/.test(this.day)) {
6159
this.hasDayError = true
6260
return
6361
}
6462
let pieces = this.day.split("-")
6563
let year = parseInt(pieces[0])
66-
date.setFullYear(year)
6764

6865
let month = parseInt(pieces[1])
6966
if (month < 1 || month > 12) {
7067
this.hasDayError = true
7168
return
7269
}
73-
date.setMonth(month - 1)
7470

7571
let day = parseInt(pieces[2])
7672
if (day < 1 || day > 32) {
7773
this.hasDayError = true
7874
return
7975
}
80-
date.setDate(day)
8176

8277
this.hasDayError = false
8378

@@ -96,7 +91,6 @@ Vue.component("datetime-input", {
9691
return
9792
}
9893
this.hasHourError = false
99-
date.setHours(hour)
10094

10195
// minute
10296
if (!/^\d+$/.test(this.minute)) {
@@ -113,7 +107,6 @@ Vue.component("datetime-input", {
113107
return
114108
}
115109
this.hasMinuteError = false
116-
date.setMinutes(minute)
117110

118111
// second
119112
if (!/^\d+$/.test(this.second)) {
@@ -130,8 +123,8 @@ Vue.component("datetime-input", {
130123
return
131124
}
132125
this.hasSecondError = false
133-
date.setSeconds(second)
134126

127+
let date = new Date(year, month - 1, day, hour, minute, second)
135128
this.timestamp = Math.floor(date.getTime() / 1000)
136129
},
137130
leadingZero: function (s, l) {

0 commit comments

Comments
 (0)