50 lines
		
	
	
		
			1.4 KiB
		
	
	
	
		
			TypeScript
		
	
	
	
	
	
			
		
		
	
	
			50 lines
		
	
	
		
			1.4 KiB
		
	
	
	
		
			TypeScript
		
	
	
	
	
	
| import { format, register } from 'timeago.js';
 | |
| 
 | |
| const TimeAgoConfiguration: string[][] = [
 | |
|   ['today', 'today'],
 | |
|   ['%s seconds ago', 'in %s seconds'],
 | |
|   ['1 minute ago', 'in 1 minute'],
 | |
|   ['%s minutes ago', 'in %s minutes'],
 | |
|   ['1 hour ago', 'in 1 hour'],
 | |
|   ['%s hours ago', 'in %s hours'],
 | |
|   ['1 day ago', 'in 1 day'],
 | |
|   ['%s days ago', 'in %s days'],
 | |
|   ['1 week ago', 'in 1 week'],
 | |
|   ['%s weeks ago', 'in %s weeks'],
 | |
|   ['1 month ago', 'in 1 month'],
 | |
|   ['%s months ago', 'in %s months'],
 | |
|   ['1 year ago', 'in 1 year'],
 | |
|   ['%s years ago', 'in %s years'],
 | |
| ];
 | |
| 
 | |
| function formatDate(date: Date): string {
 | |
|   const year = new Date(date).getFullYear();
 | |
|   const month = String(new Date(date).getMonth() + 1).padStart(2, '0');
 | |
|   const day = String(new Date(date).getDate()).padStart(2, '0');
 | |
| 
 | |
|   return `${year}-${month}-${day}`;
 | |
| }
 | |
| 
 | |
| function formatDateTime(date: Date): string {
 | |
|   const hours = String(new Date(date).getHours()).padStart(2, '0');
 | |
|   const minutes = String(new Date(date).getMinutes()).padStart(2, '0');
 | |
| 
 | |
|   return `${formatDate(date)} ${hours}:${minutes}`;
 | |
| }
 | |
| 
 | |
| function timeago(date?: Date): string {
 | |
|   if (!date) {
 | |
|     return 'today';
 | |
|   }
 | |
| 
 | |
|   const localeFunc = (number: number, index: number, _?: number): [string, string] => {
 | |
|     return TimeAgoConfiguration[index] as [string, string];
 | |
|   };
 | |
| 
 | |
|   register('timeago', localeFunc);
 | |
| 
 | |
|   return format(date, 'timeago');
 | |
| }
 | |
| 
 | |
| export { formatDate, timeago, formatDateTime };
 |