datecontroll.js
1.67 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
import { hasChinaword } from './validate';
import dayjs from 'dayjs'
function isdatetime(s) {
if (s == null || s.toString().length < 5) {
return false;
}
else if(checkDateTime(s)){
return true;
}
else {
return false;
}
function checkDateTime(str){
var reg1 = /^(\d{4})-(\d{1,2})-(\d{1,2})(\s(\d{1,2}):(\d{1,2})(:(\d{1,2}))?)?$/;
var reg2 = /^(\d{4})\/(\d{1,2})\/(\d{1,2})(\s(\d{1,2}):(\d{1,2})(:(\d{1,2}))?)?$/;
if(!reg1.test(str) && !reg2.test(str)){
return false;
}
var year = RegExp.$1,
month = RegExp.$2,
day = RegExp.$3;
if(year < 1900){
return false;
}
if(month > 12){
return false;
}
if(day > 31){
return false;
}
if(month == 2){
if(new Date(year, 1, 29).getDate() == 29 && day > 29){
return false;
}
else if(new Date(year, 1, 29).getDate() != 29 && day > 28){
return false;
}
}
return true;
}
}
function diff(now, then) {
return dayjs(now).diff(dayjs(then));
}
function isdatatypemulti(s) {
let type = {};
if (isdatetime(s)) {
type["date"] = true;
}
if (!isNaN(parseFloat(s)) && !hasChinaword(s)) {
type["num"] = true;
}
return type;
}
function isdatatype(s) {
let type = "string";
if (isdatetime(s)) {
type = "date";
}
else if (!isNaN(parseFloat(s)) && !hasChinaword(s)) {
type = "num";
}
return type;
}
export {
isdatetime,
diff,
isdatatypemulti,
isdatatype,
}