blob: ba40863b619371690b65fa629383e6717c138e48 (
plain)
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
|
/*
* rhrdweb
*
* Copyright (C) 2016 Christian Pointner <equinox@helsinki.at>
*
* This file is part of rhrdweb.
*
* rhrdweb is free software: you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* any later version.
*
* rhrdweb is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Affero General Public License for more details.
*
* You should have received a copy of the GNU Affero General Public License
* along with rhrdweb. If not, see <http://www.gnu.org/licenses/>.
*/
'use strict';
Number.prototype.pad = function(size) {
var s = String(this);
while (s.length < (size || 2)) {s = "0" + s;}
return s;
}
var weekday = new Array(7);
weekday[0] = 'Sonntag';
weekday[1] = 'Montag';
weekday[2] = 'Dienstag';
weekday[3] = 'Mittwoch';
weekday[4] = 'Donnerstag';
weekday[5] = 'Freitag';
weekday[6] = 'Samstag';
var weekday_short = new Array('So', 'Mo', 'Di', 'Mi', 'Do', 'Fr', 'Sa');
function format_datetime(d) {
if(Object.prototype.toString.call(d) !== '[object Date]') {
return '-';
}
if (d.toString() === 'Invalid Date') {
return '-';
}
var datetimestr = weekday_short[d.getDay()];
datetimestr += ' ' + Number(d.getDate()).pad(2);
datetimestr += '.' + Number(d.getMonth() + 1).pad(2);
datetimestr += '.' + d.getFullYear();
datetimestr += ' ' + Number(d.getHours()).pad(2);
datetimestr += ':' + Number(d.getMinutes()).pad(2);
datetimestr += ':' + Number(d.getSeconds()).pad(2);
return datetimestr;
}
function msToTimeString(time) {
if(time == '-') return time;
var h = Number(Math.floor(time / 3600000));
time %= 3600000;
var m = Number(Math.floor(time / 60000));
time %= 60000;
var s = Number(Math.floor(time / 1000));
var hs = Number(Math.floor((time % 1000)/100));
return h + ':' + m.pad(2) + ':' + s.pad(2) + '.' + hs;
}
function get_rd_week(msEpoch) {
//
// This computes the current Rivendell Week based on the number
// of weeks since epoch.
//
// Explanation:
// epoch was at 01.01.1970 which was a Thursday.
// Monday in that week is (s-from-epoch + 3*24*60*60) seconds ago.
// This needs to be adjusted by the timezone offset for Europe/Vienna
// which is of course not constant (damn you daylight savings time)
// Divide this by (7*24*60*60) and you get the number of
// weeks since the Monday in the week of epoch adjusted for timezone offsets.
// This week had week number 3 so add an offset of 2 and
// get the modulo of 4. This rounded down gives you the current week
// with 0 meaning Week 1. So add 1 to that number and you will get
// the current RD week.
//
var sEpoch = msEpoch / 1000 ;
var week = Math.floor((((sEpoch + 259200)/604800) + 2) % 4) + 1;
return week;
}
|