49 lines
1.3 KiB
Svelte
49 lines
1.3 KiB
Svelte
|
<script lang="ts">
|
||
|
export let birthday: string;
|
||
|
|
||
|
let year = new Date().getFullYear();
|
||
|
if (new Date(`${birthday}, ${year}, 00:00:00`) < new Date()) year++;
|
||
|
|
||
|
const countdownDate = new Date(`${birthday}, ${year} 00:00:00`);
|
||
|
|
||
|
let months = 0;
|
||
|
let weeks = 0;
|
||
|
let days = 0;
|
||
|
let hours = 0;
|
||
|
let minutes = 0;
|
||
|
let seconds = 0;
|
||
|
let milliseconds = 0;
|
||
|
|
||
|
setInterval(() => {
|
||
|
milliseconds = countdownDate.getTime() - new Date().getTime();
|
||
|
seconds = Math.floor(milliseconds / 1000);
|
||
|
minutes = Math.ceil(seconds / 60);
|
||
|
hours = Number.parseFloat((minutes / 60).toFixed(2));
|
||
|
days = Math.floor(hours / 24);
|
||
|
weeks = Math.floor(days / 7);
|
||
|
months = Math.ceil(weeks / 4.345);
|
||
|
}, 1);
|
||
|
</script>
|
||
|
|
||
|
<main>
|
||
|
<pre>{months} month{months == 1 ? "" : "s"} until {birthday}, {year}</pre>
|
||
|
<pre>{weeks} week{weeks == 1 ? "" : "s"} until {birthday}, {year}</pre>
|
||
|
<pre>{days} day{days == 1 ? "" : "s"} until {birthday}, {year}</pre>
|
||
|
<pre>{hours} hour{hours == 1 ? "" : "s"} until {birthday}, {year}</pre>
|
||
|
<pre>{minutes} minute{minutes == 1 ? "" : "s"} until {birthday}, {year}</pre>
|
||
|
<pre>{seconds} second{seconds == 1 ? "" : "s"} until {birthday}, {year}</pre>
|
||
|
<pre>{milliseconds} millisecond{milliseconds == 1
|
||
|
? ""
|
||
|
: "s"} until {birthday}, {year}</pre>
|
||
|
</main>
|
||
|
|
||
|
<style>
|
||
|
main {
|
||
|
margin: 10px 0;
|
||
|
}
|
||
|
|
||
|
pre {
|
||
|
margin: 0;
|
||
|
}
|
||
|
</style>
|