Format Relative Time
Convert an elapsed number of seconds into a human phrase like "2 minutes ago" — used for chat and feed timestamps.
Sample input
3660
Sample output
1 hour ago
Solution
def relative_time(seconds):
units = [("day", 86400), ("hour", 3600), ("minute", 60), ("second", 1)]
for name, size in units:
if seconds >= size:
value = seconds // size
plural = "s" if value != 1 else ""
return f"{value} {name}{plural} ago"
return "just now"
print(relative_time(3660))
function relativeTime(seconds) {
const units = [["day", 86400], ["hour", 3600], ["minute", 60], ["second", 1]];
for (const [name, size] of units) {
if (seconds >= size) {
const value = Math.floor(seconds / size);
const plural = value !== 1 ? "s" : "";
return `${value} ${name}${plural} ago`;
}
}
return "just now";
}
console.log(relativeTime(3660));
public class Main {
static String relativeTime(long seconds) {
String[] names = {"day", "hour", "minute", "second"};
long[] sizes = {86400, 3600, 60, 1};
for (int i = 0; i < names.length; i++) {
if (seconds >= sizes[i]) {
long value = seconds / sizes[i];
String plural = value != 1 ? "s" : "";
return value + " " + names[i] + plural + " ago";
}
}
return "just now";
}
public static void main(String[] args) {
System.out.println(relativeTime(3660));
}
}
fun relativeTime(seconds: Long): String {
val units = listOf("day" to 86400L, "hour" to 3600L, "minute" to 60L, "second" to 1L)
for ((name, size) in units) {
if (seconds >= size) {
val value = seconds / size
val plural = if (value != 1L) "s" else ""
return "$value $name$plural ago"
}
}
return "just now"
}
fun main() {
println(relativeTime(3660))
}
func relativeTime(_ seconds: Int) -> String {
let units: [(String, Int)] = [("day", 86400), ("hour", 3600), ("minute", 60), ("second", 1)]
for (name, size) in units {
if seconds >= size {
let value = seconds / size
let plural = value != 1 ? "s" : ""
return "\(value) \(name)\(plural) ago"
}
}
return "just now"
}
print(relativeTime(3660))
String relativeTime(int seconds) {
final units = [
['day', 86400],
['hour', 3600],
['minute', 60],
['second', 1],
];
for (final u in units) {
final size = u[1] as int;
if (seconds >= size) {
final value = seconds ~/ size;
final plural = value != 1 ? 's' : '';
return '$value ${u[0]}$plural ago';
}
}
return 'just now';
}
void main() {
print(relativeTime(3660));
}
#include <iostream>
#include <string>
#include <vector>
using namespace std;
string relativeTime(long seconds) {
vector<pair<string, long>> units = {{"day", 86400}, {"hour", 3600}, {"minute", 60}, {"second", 1}};
for (auto& u : units) {
if (seconds >= u.second) {
long value = seconds / u.second;
string plural = value != 1 ? "s" : "";
return to_string(value) + " " + u.first + plural + " ago";
}
}
return "just now";
}
int main() {
cout << relativeTime(3660) << endl;
return 0;
}
#include <stdio.h>
int main() {
long seconds = 3660;
const char *names[] = {"day", "hour", "minute", "second"};
long sizes[] = {86400, 3600, 60, 1};
for (int i = 0; i < 4; i++) {
if (seconds >= sizes[i]) {
long value = seconds / sizes[i];
printf("%ld %s%s ago\n", value, names[i], value != 1 ? "s" : "");
return 0;
}
}
printf("just now\n");
return 0;
}