60 lines
1.5 KiB
JavaScript
60 lines
1.5 KiB
JavaScript
const timeConverter = (hoursAgo) => {
|
|
const date = new Date();
|
|
date.setTime(date.getTime() - (parseInt(hoursAgo) * 60 * 60 * 1000));
|
|
|
|
return {
|
|
indonesian: date.toLocaleString('id-ID', {
|
|
timeZone: 'Asia/Jakarta'
|
|
}),
|
|
iso: date.toISOString()
|
|
};
|
|
};
|
|
|
|
const parseRelativeTime = (relativeTimeString) => {
|
|
const match = relativeTimeString.match(/(\d+)(hr|h|hours?|min|m|minutes?|d|days?)\s*ago/i);
|
|
|
|
if (!match) {
|
|
throw new Error('Invalid relative time format');
|
|
}
|
|
|
|
const value = parseInt(match[1]);
|
|
const unit = match[2].toLowerCase();
|
|
|
|
const date = new Date();
|
|
|
|
switch (unit) {
|
|
case 'hr':
|
|
case 'h':
|
|
case 'hour':
|
|
case 'hours':
|
|
date.setTime(date.getTime() - (value * 60 * 60 * 1000));
|
|
break;
|
|
case 'min':
|
|
case 'm':
|
|
case 'minute':
|
|
case 'minutes':
|
|
date.setTime(date.getTime() - (value * 60 * 1000));
|
|
break;
|
|
case 'd':
|
|
case 'day':
|
|
case 'days':
|
|
date.setTime(date.getTime() - (value * 24 * 60 * 60 * 1000));
|
|
break;
|
|
default:
|
|
throw new Error('Unsupported time unit');
|
|
}
|
|
|
|
return {
|
|
indonesian: date.toLocaleString('id-ID', {
|
|
timeZone: 'Asia/Jakarta'
|
|
}),
|
|
iso: date.toISOString(),
|
|
timestamp: date.getTime()
|
|
};
|
|
};
|
|
|
|
|
|
console.log('4 hours ago:', parseRelativeTime('4hr ago'));
|
|
console.log('30 minutes ago:', parseRelativeTime('30min ago'));
|
|
console.log('2 days ago:', parseRelativeTime('2d ago'));
|
|
console.log('Original timeConverter:', timeConverter('4')); |