Download datalab/web/node_modules/moment/src/lib/duration/iso-string.js from arshjaved/indiaai-hackathon: direct link, hf CLI and curl.
- Browser
- Download file 2.05 kB
-
https://huggingface.co/arshjaved/indiaai-hackathon/resolve/main/datalab/web/node_modules/moment/src/lib/duration/iso-string.js
- Command line
-
hf download hf://arshjaved/indiaai-hackathon/datalab/web/node_modules/moment/src/lib/duration/iso-string.js
-
curl -L -o iso-string.js https://huggingface.co/arshjaved/indiaai-hackathon/resolve/main/datalab/web/node_modules/moment/src/lib/duration/iso-string.js
2.05 kB
| import absFloor from '../utils/abs-floor'; | |
| var abs = Math.abs; | |
| function sign(x) { | |
| return ((x > 0) - (x < 0)) || +x; | |
| } | |
| export function toISOString() { | |
| // for ISO strings we do not use the normal bubbling rules: | |
| // * milliseconds bubble up until they become hours | |
| // * days do not bubble at all | |
| // * months bubble up until they become years | |
| // This is because there is no context-free conversion between hours and days | |
| // (think of clock changes) | |
| // and also not between days and months (28-31 days per month) | |
| if (!this.isValid()) { | |
| return this.localeData().invalidDate(); | |
| } | |
| var seconds = abs(this._milliseconds) / 1000; | |
| var days = abs(this._days); | |
| var months = abs(this._months); | |
| var minutes, hours, years; | |
| // 3600 seconds -> 60 minutes -> 1 hour | |
| minutes = absFloor(seconds / 60); | |
| hours = absFloor(minutes / 60); | |
| seconds %= 60; | |
| minutes %= 60; | |
| // 12 months -> 1 year | |
| years = absFloor(months / 12); | |
| months %= 12; | |
| // inspired by https://github.com/dordille/moment-isoduration/blob/master/moment.isoduration.js | |
| var Y = years; | |
| var M = months; | |
| var D = days; | |
| var h = hours; | |
| var m = minutes; | |
| var s = seconds ? seconds.toFixed(3).replace(/\.?0+$/, '') : ''; | |
| var total = this.asSeconds(); | |
| if (!total) { | |
| // this is the same as C#'s (Noda) and python (isodate)... | |
| // but not other JS (goog.date) | |
| return 'P0D'; | |
| } | |
| var totalSign = total < 0 ? '-' : ''; | |
| var ymSign = sign(this._months) !== sign(total) ? '-' : ''; | |
| var daysSign = sign(this._days) !== sign(total) ? '-' : ''; | |
| var hmsSign = sign(this._milliseconds) !== sign(total) ? '-' : ''; | |
| return totalSign + 'P' + | |
| (Y ? ymSign + Y + 'Y' : '') + | |
| (M ? ymSign + M + 'M' : '') + | |
| (D ? daysSign + D + 'D' : '') + | |
| ((h || m || s) ? 'T' : '') + | |
| (h ? hmsSign + h + 'H' : '') + | |
| (m ? hmsSign + m + 'M' : '') + | |
| (s ? hmsSign + s + 'S' : ''); | |
| } | |