Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
10 changes: 5 additions & 5 deletions 1-js/05-data-types/11-date/1-new-date/solution.md
Original file line number Diff line number Diff line change
@@ -1,15 +1,15 @@
The `new Date` constructor uses the local time zone. So the only important thing to remember is that months start from zero.
`new Date` konstruktøren bruger lokal tidszone. Så det vigtigste at huske er, at måneder starter fra 0.

So February has number 1.
Så februar har nummer 1.

Here's an example with numbers as date components:
Her er et eksempel med tal som dato-komponenter:

```js run
//new Date(year, month, date, hour, minute, second, millisecond)
//new Date(år, måned, månedsdag, timer, minutter, sekunder, mellisekunder)
let d1 = new Date(2012, 1, 20, 3, 12);
alert( d1 );
```
We could also create a date from a string, like this:
Vi kunne også oprette en dato fra en streng, som dette:

```js run
//new Date(datastring)
Expand Down
6 changes: 3 additions & 3 deletions 1-js/05-data-types/11-date/1-new-date/task.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,8 +2,8 @@ importance: 5

---

# Create a date
# Opret et dato objekt

Create a `Date` object for the date: Feb 20, 2012, 3:12am. The time zone is local.
Opret et `Date` objekt for datoen: 20. februar 2012 kl. 03:12. Tidszonen er lokal.

Show it using `alert`.
Vis det med `alert`.
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
function getWeekDay(date) {
let days = ['SU', 'MO', 'TU', 'WE', 'TH', 'FR', 'SA'];
let days = ['Søn', 'Man', 'Tir', 'Ons', 'Tors', 'Fre', 'Lør'];

return days[date.getDay()];
}

30 changes: 15 additions & 15 deletions 1-js/05-data-types/11-date/2-get-week-day/_js.view/test.js
Original file line number Diff line number Diff line change
@@ -1,29 +1,29 @@
describe("getWeekDay", function() {
it("3 January 2014 - friday", function() {
assert.equal(getWeekDay(new Date(2014, 0, 3)), 'FR');
describe("getWeekDay", function () {
it("3 January 2014 - fredag", function () {
assert.equal(getWeekDay(new Date(2014, 0, 3)), 'Fre');
});

it("4 January 2014 - saturday", function() {
assert.equal(getWeekDay(new Date(2014, 0, 4)), 'SA');
it("4 January 2014 - lørdag", function () {
assert.equal(getWeekDay(new Date(2014, 0, 4)), 'Lør');
});

it("5 January 2014 - sunday", function() {
assert.equal(getWeekDay(new Date(2014, 0, 5)), 'SU');
it("5 January 2014 - søndag", function () {
assert.equal(getWeekDay(new Date(2014, 0, 5)), 'Søn');
});

it("6 January 2014 - monday", function() {
assert.equal(getWeekDay(new Date(2014, 0, 6)), 'MO');
it("6 January 2014 - mandag", function () {
assert.equal(getWeekDay(new Date(2014, 0, 6)), 'Man');
});

it("7 January 2014 - tuesday", function() {
assert.equal(getWeekDay(new Date(2014, 0, 7)), 'TU');
it("7 January 2014 - tirsdag", function () {
assert.equal(getWeekDay(new Date(2014, 0, 7)), 'Tir');
});

it("8 January 2014 - wednesday", function() {
assert.equal(getWeekDay(new Date(2014, 0, 8)), 'WE');
it("8 January 2014 - onsdag", function () {
assert.equal(getWeekDay(new Date(2014, 0, 8)), 'Ons');
});

it("9 January 2014 - thursday", function() {
assert.equal(getWeekDay(new Date(2014, 0, 9)), 'TH');
it("9 January 2014 - torsdag", function () {
assert.equal(getWeekDay(new Date(2014, 0, 9)), 'Tors');
});
});
10 changes: 5 additions & 5 deletions 1-js/05-data-types/11-date/2-get-week-day/solution.md
Original file line number Diff line number Diff line change
@@ -1,14 +1,14 @@
The method `date.getDay()` returns the number of the weekday, starting from sunday.
Metoden `date.getDay()` returnerer nummeret af dagen, der starter med søndag.

Let's make an array of weekdays, so that we can get the proper day name by its number:
Lad os lave et array af dage, så vi kan få den rigtige dagnavn efter nummeret:

```js run demo
function getWeekDay(date) {
let days = ['SU', 'MO', 'TU', 'WE', 'TH', 'FR', 'SA'];
let days = ['Søn', 'Man', 'Tir', 'Ons', 'Tors', 'Fre', 'Lør'];

return days[date.getDay()];
}

let date = new Date(2014, 0, 3); // 3 Jan 2014
alert( getWeekDay(date) ); // FR
let date = new Date(2014, 0, 3); // 3. januar 2014
alert( getWeekDay(date) ); // Fre
```
10 changes: 5 additions & 5 deletions 1-js/05-data-types/11-date/2-get-week-day/task.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,13 +2,13 @@ importance: 5

---

# Show a weekday
# Vis dagen i ugen

Write a function `getWeekDay(date)` to show the weekday in short format: 'MO', 'TU', 'WE', 'TH', 'FR', 'SA', 'SU'.
Skriv en funktion `getWeekDay(date)` der viser dagen i ugen i forkortet format: 'Man', 'Tir', 'Ons', 'Tors', 'Fre', 'Lør', 'Søn'.

For instance:
For eksempel:

```js no-beautify
let date = new Date(2012, 0, 3); // 3 Jan 2012
alert( getWeekDay(date) ); // should output "TU"
let date = new Date(2014, 0, 3); // 3. januar 2014
alert( getWeekDay(date) ); // Skal skrive "Fre
```
2 changes: 1 addition & 1 deletion 1-js/05-data-types/11-date/3-weekday/_js.view/solution.js
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@ function getLocalDay(date) {

let day = date.getDay();

if (day == 0) { // weekday 0 (sunday) is 7 in european
if (day == 0) { // ugedage 0 (søndag) er 7 i europæiske lande
day = 7;
}

Expand Down
16 changes: 8 additions & 8 deletions 1-js/05-data-types/11-date/3-weekday/_js.view/test.js
Original file line number Diff line number Diff line change
@@ -1,29 +1,29 @@
describe("getLocalDay returns the \"european\" weekday", function() {
it("3 January 2014 - friday", function() {
describe("getLocalDay returnerer den europæiske ugedag", function () {
it("3 January 2014 - fredag", function () {
assert.equal(getLocalDay(new Date(2014, 0, 3)), 5);
});

it("4 January 2014 - saturday", function() {
it("4 January 2014 - lørdag", function () {
assert.equal(getLocalDay(new Date(2014, 0, 4)), 6);
});

it("5 January 2014 - sunday", function() {
it("5 January 2014 - søndag", function () {
assert.equal(getLocalDay(new Date(2014, 0, 5)), 7);
});

it("6 January 2014 - monday", function() {
it("6 January 2014 - mandag", function () {
assert.equal(getLocalDay(new Date(2014, 0, 6)), 1);
});

it("7 January 2014 - tuesday", function() {
it("7 January 2014 - tirsdag", function () {
assert.equal(getLocalDay(new Date(2014, 0, 7)), 2);
});

it("8 January 2014 - wednesday", function() {
it("8 January 2014 - onsdag", function () {
assert.equal(getLocalDay(new Date(2014, 0, 8)), 3);
});

it("9 January 2014 - thursday", function() {
it("9 January 2014 - torsdag", function () {
assert.equal(getLocalDay(new Date(2014, 0, 9)), 4);
});
});
8 changes: 4 additions & 4 deletions 1-js/05-data-types/11-date/3-weekday/task.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,11 +2,11 @@ importance: 5

---

# European weekday
# Europæiske ugedage

European countries have days of week starting with Monday (number 1), then Tuesday (number 2) and till Sunday (number 7). Write a function `getLocalDay(date)` that returns the "European" day of week for `date`.
Europæiske lande starter med mandag (nummer 1), så tirsdag (nummer 2) og så videre indtil søndag (nummer 7). Skriv en funktion `getLocalDay(date)` der returnerer "Europæisk" ugedag for `date`.

```js no-beautify
let date = new Date(2012, 0, 3); // 3 Jan 2012
alert( getLocalDay(date) ); // tuesday, should show 2
let date = new Date(2012, 0, 3); // 3. januar 2012
alert( getLocalDay(date) ); // tirsdag, should show 2
```
12 changes: 6 additions & 6 deletions 1-js/05-data-types/11-date/4-get-date-ago/_js.view/test.js
Original file line number Diff line number Diff line change
@@ -1,23 +1,23 @@
describe("getDateAgo", function() {
describe("getDateAgo", function () {

it("1 day before 02.01.2015 -> day 1", function() {
it("1 dag før 02.01.2015 -> day 1", function () {
assert.equal(getDateAgo(new Date(2015, 0, 2), 1), 1);
});


it("2 days before 02.01.2015 -> day 31", function() {
it("2 dage før 02.01.2015 -> day 31", function () {
assert.equal(getDateAgo(new Date(2015, 0, 2), 2), 31);
});

it("100 days before 02.01.2015 -> day 24", function() {
it("100 dage før 02.01.2015 -> day 24", function () {
assert.equal(getDateAgo(new Date(2015, 0, 2), 100), 24);
});

it("365 days before 02.01.2015 -> day 2", function() {
it("365 dage før 02.01.2015 -> day 2", function () {
assert.equal(getDateAgo(new Date(2015, 0, 2), 365), 2);
});

it("does not modify the given date", function() {
it("ændrer ikke den givne datoen", function () {
let date = new Date(2015, 0, 2);
let dateCopy = new Date(date);
getDateAgo(dateCopy, 100);
Expand Down
6 changes: 3 additions & 3 deletions 1-js/05-data-types/11-date/4-get-date-ago/solution.md
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
The idea is simple: to substract given number of days from `date`:
Ideen er simpel: at trække det givne antal af dage fra `date`:

```js
function getDateAgo(date, days) {
Expand All @@ -7,9 +7,9 @@ function getDateAgo(date, days) {
}
```

...But the function should not change `date`. That's an important thing, because the outer code which gives us the date does not expect it to change.
...men funktionen skal ikke ændre den givne `date`. Det er en vigtig ting, fordi den ydre kode, der giver os datoen, ikke forventer, at den ændres.

To implement it let's clone the date, like this:
For at implementere det skal vi klone datoen, sådan her:

```js run demo
function getDateAgo(date, days) {
Expand Down
10 changes: 5 additions & 5 deletions 1-js/05-data-types/11-date/4-get-date-ago/task.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,13 +2,13 @@ importance: 4

---

# Which day of month was many days ago?
# Hvad var dagen for mange dage siden?

Create a function `getDateAgo(date, days)` to return the day of month `days` ago from the `date`.
Skriv en funktion `getDateAgo(date, days)` der returnerer dagen for `days` dage siden fra `date`.

For instance, if today is 20th, then `getDateAgo(new Date(), 1)` should be 19th and `getDateAgo(new Date(), 2)` should be 18th.
For eksempel, hvis idag er den 20de, så skal `getDateAgo(new Date(), 1)` være den 19de og `getDateAgo(new Date(), 2)` være den 18de.

Should work reliably for `days=365` or more:
Skal virke på en pålitelig måde for `days=365` eller mere:

```js
let date = new Date(2015, 0, 2);
Expand All @@ -18,4 +18,4 @@ alert( getDateAgo(date, 2) ); // 31, (31 Dec 2014)
alert( getDateAgo(date, 365) ); // 2, (2 Jan 2014)
```

P.S. The function should not modify the given `date`.
P.S. Funktionen skal ikke ændre den givne `date`.
Original file line number Diff line number Diff line change
@@ -1,13 +1,13 @@
describe("getLastDayOfMonth", function() {
it("last day of 01.01.2012 - 31", function() {
it("sidste dag i 01.01.2012 - 31", function() {
assert.equal(getLastDayOfMonth(2012, 0), 31);
});

it("last day of 01.02.2012 - 29 (leap year)", function() {
it("sidste dag i 01.02.2012 - 29 (skudår)", function() {
assert.equal(getLastDayOfMonth(2012, 1), 29);
});

it("last day of 01.02.2013 - 28", function() {
it("sidste dag i 01.02.2013 - 28", function() {
assert.equal(getLastDayOfMonth(2013, 1), 28);
});
});
4 changes: 2 additions & 2 deletions 1-js/05-data-types/11-date/5-last-day-of-month/solution.md
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
Let's create a date using the next month, but pass zero as the day:
Lad os oprette en datoen med næste måned, men overfør 0 som dagen:
```js run demo
function getLastDayOfMonth(year, month) {
let date = new Date(year, month + 1, 0);
Expand All @@ -10,4 +10,4 @@ alert( getLastDayOfMonth(2012, 1) ); // 29
alert( getLastDayOfMonth(2013, 1) ); // 28
```

Normally, dates start from 1, but technically we can pass any number, the date will autoadjust itself. So when we pass 0, then it means "one day before 1st day of the month", in other words: "the last day of the previous month".
Normalt starter datoen fra 1, men vi kan overføre enhver tal, datoen vil autoadjust sig selv. Så når vi overfører 0, betyder det "en dag før den første dag i måned", i anden ord: "den sidste dag i den forrige måned".
12 changes: 6 additions & 6 deletions 1-js/05-data-types/11-date/5-last-day-of-month/task.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,13 +2,13 @@ importance: 5

---

# Last day of month?
# Sidste dag i måned?

Write a function `getLastDayOfMonth(year, month)` that returns the last day of month. Sometimes it is 30th, 31st or even 28/29th for Feb.
Skriv en funktion `getLastDayOfMonth(year, month)` der returnerer den sidste dag i måned. Som givet kan det være den 30de, 31de eller 28/29 for Feb.

Parameters:
Parametre:

- `year` -- four-digits year, for instance 2012.
- `month` -- month, from 0 to 11.
- `year` -- fire-sifret år, for eksempel 2012.
- `month` -- måned, fra 0 til 11.

For instance, `getLastDayOfMonth(2012, 1) = 29` (leap year, Feb).
For eksempel, `getLastDayOfMonth(2012, 1) = 29` (skudår, februar).
12 changes: 6 additions & 6 deletions 1-js/05-data-types/11-date/6-get-seconds-today/solution.md
Original file line number Diff line number Diff line change
@@ -1,22 +1,22 @@
To get the number of seconds, we can generate a date using the current day and time 00:00:00, then substract it from "now".
For at få antallet af sekunder, kan vi generere en datoen med den nuværende dag og tid 00:00:00, så kan vi subtrahere det fra "nu".

The difference is the number of milliseconds from the beginning of the day, that we should divide by 1000 to get seconds:
Differensen er antallet af millisekunder fra starten af dagen, der skal divideres med 1000 for at få sekunder:

```js run
function getSecondsToday() {
let now = new Date();

// create an object using the current day/month/year
// opret et objekt med den nuværende dag/måned/år
let today = new Date(now.getFullYear(), now.getMonth(), now.getDate());

let diff = now - today; // ms difference
return Math.round(diff / 1000); // make seconds
let diff = now - today; // forskel i millisekunder
return Math.round(diff / 1000); // omdan til sekunder
}

alert( getSecondsToday() );
```

An alternative solution would be to get hours/minutes/seconds and convert them to seconds:
En anden løsning ville være at få timer/minutes/seconds og konvertere dem til sekunder:

```js run
function getSecondsToday() {
Expand Down
8 changes: 4 additions & 4 deletions 1-js/05-data-types/11-date/6-get-seconds-today/task.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,14 +2,14 @@ importance: 5

---

# How many seconds have passed today?
# Hvor mange sekunder har gået i dag?

Write a function `getSecondsToday()` that returns the number of seconds from the beginning of today.
Skriv en funktion `getSecondsToday()` der returnerer antallet af sekunder fra starten af dagen i dag.

For instance, if now were `10:00 am`, and there was no daylight savings shift, then:
For eksempel, hvis nu var `10:00 am`, og der var ikke en skudskift, så:

```js
getSecondsToday() == 36000 // (3600 * 10)
```

The function should work in any day. That is, it should not have a hard-coded value of "today".
Funktionen skal fungere for enhver dag. Det betyder, at den ikke kan have en fast indsat værdi af dagen i dag.
14 changes: 7 additions & 7 deletions 1-js/05-data-types/11-date/7-get-seconds-to-tomorrow/solution.md
Original file line number Diff line number Diff line change
@@ -1,20 +1,20 @@
To get the number of milliseconds till tomorrow, we can from "tomorrow 00:00:00" substract the current date.
For at få antallet af millisekunder til morgen, kan vi fra "morgens 00:00:00" subtrahere den nuværende dags tidsstempel.

First, we generate that "tomorrow", and then do it:
Først genererer vi den "morgens", og så gør vi det:

```js run
function getSecondsToTomorrow() {
let now = new Date();

// tomorrow date
// imorgens tidsstempel
let tomorrow = new Date(now.getFullYear(), now.getMonth(), *!*now.getDate()+1*/!*);

let diff = tomorrow - now; // difference in ms
return Math.round(diff / 1000); // convert to seconds
let diff = tomorrow - now; // forskel i millisekunder
return Math.round(diff / 1000); // konverter til sekunder
}
```

Alternative solution:
Alternative løsning:

```js run
function getSecondsToTomorrow() {
Expand All @@ -29,4 +29,4 @@ function getSecondsToTomorrow() {
}
```

Please note that many countries have Daylight Savings Time (DST), so there may be days with 23 or 25 hours. We may want to treat such days separately.
Bemærk, at mange lande har sommer tid (DST), så der kan være dage med 23 eller 25 timer. Vi kan ønske at behandle sådanne dage separat.
Loading