#98 extend time format to use milliseconds
This commit is contained in:
parent
4b11841bc1
commit
2712ac3201
15
dist/frappe-gantt.js
vendored
15
dist/frappe-gantt.js
vendored
@ -25,7 +25,7 @@ const month_names = [
|
||||
];
|
||||
|
||||
var date_utils = {
|
||||
parse(date, date_separator = '-', time_separator = ':') {
|
||||
parse(date, date_separator = '-', time_separator = /[.:]/) {
|
||||
if (date instanceof Date) {
|
||||
return date;
|
||||
}
|
||||
@ -44,6 +44,10 @@ var date_utils = {
|
||||
let vals = date_parts;
|
||||
|
||||
if (time_parts && time_parts.length) {
|
||||
if (time_parts.length == 4) {
|
||||
time_parts[3] = '0.' + time_parts[3];
|
||||
time_parts[3] = parseFloat(time_parts[3]) * 1000;
|
||||
}
|
||||
vals = vals.concat(time_parts);
|
||||
}
|
||||
|
||||
@ -61,15 +65,19 @@ var date_utils = {
|
||||
val = val + 1;
|
||||
}
|
||||
|
||||
if (i === 6) {
|
||||
return padStart(val + '', 3, '0');
|
||||
}
|
||||
|
||||
return padStart(val + '', 2, '0');
|
||||
});
|
||||
const date_string = `${vals[0]}-${vals[1]}-${vals[2]}`;
|
||||
const time_string = `${vals[3]}:${vals[4]}:${vals[5]}`;
|
||||
const time_string = `${vals[3]}:${vals[4]}:${vals[5]}.${vals[6]}`;
|
||||
|
||||
return date_string + (with_time ? ' ' + time_string : '');
|
||||
},
|
||||
|
||||
format(date, format_string = 'YYYY-MM-DD HH:mm:ss') {
|
||||
format(date, format_string = 'YYYY-MM-DD HH:mm:ss.SSS') {
|
||||
const values = this.get_date_values(date).map(d => padStart(d, 2, 0));
|
||||
const format_map = {
|
||||
YYYY: values[0],
|
||||
@ -78,6 +86,7 @@ var date_utils = {
|
||||
HH: values[3],
|
||||
mm: values[4],
|
||||
ss: values[5],
|
||||
SSS:values[6],
|
||||
D: values[2],
|
||||
MMMM: month_names[+values[1]],
|
||||
MMM: month_names[+values[1]]
|
||||
|
||||
2
dist/frappe-gantt.min.js
vendored
2
dist/frappe-gantt.min.js
vendored
File diff suppressed because one or more lines are too long
@ -22,7 +22,7 @@ const month_names = [
|
||||
];
|
||||
|
||||
export default {
|
||||
parse(date, date_separator = '-', time_separator = ':') {
|
||||
parse(date, date_separator = '-', time_separator = /[.:]/) {
|
||||
if (date instanceof Date) {
|
||||
return date;
|
||||
}
|
||||
@ -41,6 +41,10 @@ export default {
|
||||
let vals = date_parts;
|
||||
|
||||
if (time_parts && time_parts.length) {
|
||||
if (time_parts.length == 4) {
|
||||
time_parts[3] = '0.' + time_parts[3];
|
||||
time_parts[3] = parseFloat(time_parts[3]) * 1000;
|
||||
}
|
||||
vals = vals.concat(time_parts);
|
||||
}
|
||||
|
||||
@ -58,15 +62,19 @@ export default {
|
||||
val = val + 1;
|
||||
}
|
||||
|
||||
if (i === 6) {
|
||||
return padStart(val + '', 3, '0');
|
||||
}
|
||||
|
||||
return padStart(val + '', 2, '0');
|
||||
});
|
||||
const date_string = `${vals[0]}-${vals[1]}-${vals[2]}`;
|
||||
const time_string = `${vals[3]}:${vals[4]}:${vals[5]}`;
|
||||
const time_string = `${vals[3]}:${vals[4]}:${vals[5]}.${vals[6]}`;
|
||||
|
||||
return date_string + (with_time ? ' ' + time_string : '');
|
||||
},
|
||||
|
||||
format(date, format_string = 'YYYY-MM-DD HH:mm:ss') {
|
||||
format(date, format_string = 'YYYY-MM-DD HH:mm:ss.SSS') {
|
||||
const values = this.get_date_values(date).map(d => padStart(d, 2, 0));
|
||||
const format_map = {
|
||||
YYYY: values[0],
|
||||
@ -75,6 +83,7 @@ export default {
|
||||
HH: values[3],
|
||||
mm: values[4],
|
||||
ss: values[5],
|
||||
SSS:values[6],
|
||||
D: values[2],
|
||||
MMMM: month_names[+values[1]],
|
||||
MMM: month_names[+values[1]]
|
||||
|
||||
@ -19,11 +19,45 @@ test('Parse: parses string datetime', () => {
|
||||
expect(date.getSeconds()).toBe(34);
|
||||
});
|
||||
|
||||
test('Parse: parses string datetime', () => {
|
||||
const date = date_utils.parse('2016-02-29 16:08:34.3');
|
||||
|
||||
expect(date.getFullYear()).toBe(2016);
|
||||
expect(date.getMonth()).toBe(1);
|
||||
expect(date.getDate()).toBe(29);
|
||||
expect(date.getHours()).toBe(16);
|
||||
expect(date.getMinutes()).toBe(8);
|
||||
expect(date.getSeconds()).toBe(34);
|
||||
expect(date.getMilliseconds()).toBe(300);
|
||||
});
|
||||
|
||||
test('Parse: parses string datetime', () => {
|
||||
const date = date_utils.parse('2015-07-01 00:00:59.200');
|
||||
|
||||
expect(date.getFullYear()).toBe(2015);
|
||||
expect(date.getMonth()).toBe(6);
|
||||
expect(date.getDate()).toBe(1);
|
||||
expect(date.getHours()).toBe(0);
|
||||
expect(date.getMinutes()).toBe(0);
|
||||
expect(date.getSeconds()).toBe(59);
|
||||
expect(date.getMilliseconds()).toBe(200);
|
||||
});
|
||||
|
||||
test('Format: converts date object to string', () => {
|
||||
const date = new Date('2017-09-18');
|
||||
expect(date_utils.to_string(date)).toBe('2017-09-18');
|
||||
});
|
||||
|
||||
test('Format: converts date object to string', () => {
|
||||
const date = new Date('2016-02-29 16:08:34.3');
|
||||
expect(date_utils.to_string(date, true)).toBe('2016-02-29 16:08:34.300');
|
||||
});
|
||||
|
||||
test('Format: converts date object to string', () => {
|
||||
const date = new Date('2016-02-29 16:08:34.3');
|
||||
expect(date_utils.to_string(date, true)).toBe('2016-02-29 16:08:34.300');
|
||||
});
|
||||
|
||||
test('Parse: returns Date Object as is', () => {
|
||||
const d = new Date();
|
||||
const date = date_utils.parse(d);
|
||||
@ -41,31 +75,41 @@ test('Diff: returns diff between 2 date objects', () => {
|
||||
});
|
||||
|
||||
test('StartOf', () => {
|
||||
const date = date_utils.parse('2017-08-12 15:07:34');
|
||||
const date = date_utils.parse('2017-08-12 15:07:34.012');
|
||||
|
||||
const start_of_millisecond = date_utils.start_of(date, 'millisecond');
|
||||
expect(date_utils.to_string(start_of_millisecond, true)).toBe(
|
||||
'2017-08-12 15:07:34.012'
|
||||
);
|
||||
|
||||
const start_of_second = date_utils.start_of(date, 'second');
|
||||
expect(date_utils.to_string(start_of_second, true)).toBe(
|
||||
'2017-08-12 15:07:34.000'
|
||||
);
|
||||
|
||||
const start_of_minute = date_utils.start_of(date, 'minute');
|
||||
expect(date_utils.to_string(start_of_minute, true)).toBe(
|
||||
'2017-08-12 15:07:00'
|
||||
'2017-08-12 15:07:00.000'
|
||||
);
|
||||
|
||||
const start_of_hour = date_utils.start_of(date, 'hour');
|
||||
expect(date_utils.to_string(start_of_hour, true)).toBe(
|
||||
'2017-08-12 15:00:00'
|
||||
'2017-08-12 15:00:00.000'
|
||||
);
|
||||
|
||||
const start_of_day = date_utils.start_of(date, 'day');
|
||||
expect(date_utils.to_string(start_of_day, true)).toBe(
|
||||
'2017-08-12 00:00:00'
|
||||
'2017-08-12 00:00:00.000'
|
||||
);
|
||||
|
||||
const start_of_month = date_utils.start_of(date, 'month');
|
||||
expect(date_utils.to_string(start_of_month, true)).toBe(
|
||||
'2017-08-01 00:00:00'
|
||||
'2017-08-01 00:00:00.000'
|
||||
);
|
||||
|
||||
const start_of_year = date_utils.start_of(date, 'year');
|
||||
expect(date_utils.to_string(start_of_year, true)).toBe(
|
||||
'2017-01-01 00:00:00'
|
||||
'2017-01-01 00:00:00.000'
|
||||
);
|
||||
});
|
||||
|
||||
@ -73,3 +117,10 @@ test('format', () => {
|
||||
const date = date_utils.parse('2017-08-12 15:07:23');
|
||||
expect(date_utils.format(date, 'YYYY-MM-DD')).toBe('2017-08-12');
|
||||
});
|
||||
|
||||
test('format', () => {
|
||||
const date = date_utils.parse('2016-02-29 16:08:34.3');
|
||||
expect(date_utils.format(date)).toBe('2016-02-29 16:08:34.300');
|
||||
});
|
||||
|
||||
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user