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 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 | import moment from 'moment'; const d3 = require('d3'); function UTC(dttm) { return new Date( dttm.getUTCFullYear(), dttm.getUTCMonth(), dttm.getUTCDate(), dttm.getUTCHours(), dttm.getUTCMinutes(), dttm.getUTCSeconds(), ); } export const tickMultiFormat = d3.time.format.multi([ [ '.%L', function (d) { return d.getMilliseconds(); }, ], // If there are millisections, show only them [ ':%S', function (d) { return d.getSeconds(); }, ], // If there are seconds, show only them [ '%a %b %d, %I:%M %p', function (d) { return d.getMinutes() !== 0; }, ], // If there are non-zero minutes, show Date, Hour:Minute [AM/PM] [ '%a %b %d, %I %p', function (d) { return d.getHours() !== 0; }, ], // If there are hours that are multiples of 3, show date and AM/PM [ '%a %b %d', function (d) { return d.getDate() !== 1; }, ], // If not the first of the month, do "month day, year." [ '%B %Y', function (d) { return d.getMonth() !== 0 && d.getDate() === 1; }, ], // If the first of the month, do "month day, year." [ '%Y', function () { return true; }, ], // fall back on month, year ]); export const formatDate = function (dttm) { const d = UTC(new Date(dttm)); // d = new Date(d.getTime() - 1 * 60 * 60 * 1000); return tickMultiFormat(d); }; export const timeFormatFactory = function (d3timeFormat) { const f = d3.time.format(d3timeFormat); return function (dttm) { const d = UTC(new Date(dttm)); return f(d); }; }; export const fDuration = function (t1, t2, f = 'HH:mm:ss.SS') { const diffSec = t2 - t1; const duration = moment(new Date(diffSec)); return duration.utc().format(f); }; export const now = function () { // seconds from EPOCH as a float return moment().utc().valueOf(); }; export const epochTimeXHoursAgo = function (h) { return moment() .subtract(h, 'hours') .utc() .valueOf(); }; export const epochTimeXDaysAgo = function (d) { return moment() .subtract(d, 'days') .utc() .valueOf(); }; export const epochTimeXYearsAgo = function (y) { return moment() .subtract(y, 'years') .utc() .valueOf(); }; |