mue/src/components/Clock.jsx

55 lines
1.3 KiB
React
Raw Normal View History

2019-10-20 12:39:01 +00:00
import React from 'react';
export default class Clock extends React.Component {
constructor(...args) {
super(...args);
this.timer = undefined;
2019-10-20 12:39:01 +00:00
this.state = {
2019-11-29 12:12:34 +00:00
date: '',
ampm: ''
2019-10-20 12:39:01 +00:00
};
}
2020-07-20 21:39:31 +00:00
startTime(time = localStorage.getItem('seconds') === 'true' ? (1000 - Date.now() % 1000) : (60000 - Date.now() % 60000)) {
this.timer = setTimeout(() => {
const now = new Date();
let sec = '';
2020-07-20 21:39:31 +00:00
if (localStorage.getItem('seconds') === 'true') sec = `:${('00' + now.getSeconds()).slice(-2)}`;
if (localStorage.getItem('24hour') === 'true') {
2020-07-20 21:39:31 +00:00
this.setState({
date: `${('00' + now.getHours()).slice(-2)}:${('00' + now.getMinutes()).slice(-2)}${sec}`
2020-07-20 21:39:31 +00:00
});
} else {
// 12 hour support
let hours = now.getHours();
if (hours > 12) hours -= 12;
2019-10-20 12:39:01 +00:00
2020-07-20 21:39:31 +00:00
this.setState({
date: `${('00' + hours).slice(-2)}:${('00' + now.getMinutes()).slice(-2)}${sec}`,
2020-07-20 21:39:31 +00:00
ampm: now.getHours() > 11 ? 'PM' : 'AM'
});
}
this.startTime();
}, time);
2019-10-20 12:39:01 +00:00
}
componentDidMount() {
const enabled = localStorage.getItem('time');
if (enabled === 'false') return;
this.startTime(0);
2019-10-20 12:39:01 +00:00
}
render() {
2019-10-21 19:04:30 +00:00
return <h1 className='clock'>
2019-10-20 12:39:01 +00:00
{this.state.date}
2019-10-21 19:04:30 +00:00
<span className='ampm'>
2020-07-20 21:39:31 +00:00
{this.state.ampm}
2019-10-20 12:39:01 +00:00
</span>
</h1>;
}
}