84 lines
No EOL
3 KiB
TypeScript
84 lines
No EOL
3 KiB
TypeScript
export function getTimeIn(timezone: string): string {
|
|
const options = { timeZone: timezone, hour12: true, hour: 'numeric', minute: 'numeric' };
|
|
// @ts-ignore
|
|
const time = new Date().toLocaleString("en-US", options);
|
|
return time;
|
|
}
|
|
|
|
export function timeAgo(unixTimestamp: number): string {
|
|
const date = new Date(unixTimestamp);
|
|
// @ts-ignore
|
|
const seconds = Math.floor((new Date() - date) / 1000);
|
|
let interval = seconds / 31536000;
|
|
if (interval > 1) {
|
|
return Math.floor(interval) + " years ago";
|
|
}
|
|
interval = seconds / 2592000;
|
|
if (interval > 1) {
|
|
return Math.floor(interval) + " months ago";
|
|
}
|
|
interval = seconds / 86400;
|
|
if (interval > 1) {
|
|
return Math.floor(interval) + " days ago";
|
|
}
|
|
interval = seconds / 3600;
|
|
if (interval > 1) {
|
|
return Math.floor(interval) + " hours ago";
|
|
}
|
|
interval = seconds / 60;
|
|
if (interval > 1) {
|
|
return Math.floor(interval) + " minutes ago";
|
|
}
|
|
return Math.floor(seconds) + " seconds ago";
|
|
}
|
|
|
|
export function randomStr(length: number, withNumbers = true): string {
|
|
let result = '';
|
|
const characters = ('ABCDEFGHIJKLMNOPQRSTUVWXYZ' + (withNumbers ? '123456789' : '')).toUpperCase();
|
|
const charactersLength = characters.length;
|
|
let counter = 0;
|
|
while (counter < length) {
|
|
result += characters.charAt(Math.floor(Math.random() * charactersLength));
|
|
counter += 1;
|
|
}
|
|
return result;
|
|
}
|
|
|
|
export default {
|
|
title: "satr14's site",
|
|
quote: "sometimes you just gotta implement it yourself",
|
|
name: "satr14",
|
|
roles: ["Web Developer", "Sysadmin", "Hobbyist", "Student"],
|
|
description: "I'm Satria, Im a self-taught hobbyist web developer and homelaber sysadmin from Indonesia. I've been programming since 2021 and spend my free time working on personal projects and experimenting with new technologies.",
|
|
skills: ["Tailwind", "SvelteKit", "TypeScript", "Bun", "Express", "PocketBase", "Linux", "Nginx", "Docker", "Git", "Bash", "Proxmox", "Nix"],
|
|
timezone: "Asia/Jakarta",
|
|
location: "Indonesia",
|
|
links: {
|
|
"forgejo.git": "https://git.satr14.my.id",
|
|
"fetch.sh": "https://fetch.satr14.my.id",
|
|
"flake.nix": "https://flake.satr14.my.id",
|
|
},
|
|
communities: {
|
|
"part-of.my.id": {
|
|
icon: "https://avatars.githubusercontent.com/u/184933425?s=200&v=4",
|
|
role: "Founder",
|
|
url: "https://part-of.my.id/",
|
|
},
|
|
"is-a.dev": {
|
|
icon: "https://avatars.githubusercontent.com/u/72358814?s=200&v=4",
|
|
role: "Maintainer",
|
|
url: "https://is-a.dev/",
|
|
},
|
|
"Hack Club": {
|
|
icon: "https://assets.hackclub.com/icon-square.png",
|
|
role: "Former Event Organizer",
|
|
url: "https://hackclub.com/",
|
|
},
|
|
},
|
|
socials: {
|
|
protonmail: "mailto:admin@satr14.my.id",
|
|
github: "https://github.com/satr14washere",
|
|
discord: "https://discord.com/users/882595027132493864",
|
|
namemc: "https://namemc.com/profile/satr14.1"
|
|
},
|
|
} |