Skip to content

Instantly share code, notes, and snippets.

@zhepa zhepa/ass.js
Created Nov 2, 2017

Embed
What would you like to do?
function formatTimestamp(ts) {
var now = new Date()
var dif = timestamp() - ts
if (dif <= 30) return "только что"
else if (dif < 60) return "30 секунд назад"
else if (dif < 120) return "минуту назад"
else if (dif < 180) return "две минуты назад"
else if (dif < 240) return "три минуты назад"
else if (dif < 300) return "четыре минуты назад"
else if (dif < 360) return "пять минут назад"
else if (dif < 3600) {
// 6 .. 60
var min = (dif / 60)|0
return min + " минут" + plural(min, "у", "ы", "") + " назад"
}
else if (dif < 7200) return "два часа назад"
else if (dif < 7200) return "три часа назад"
else {
var months = ["января", "февраля", "марта", "апреля", "мая", "июня", "июля", "августа", "сентября", "октября", "ноября", "декабря"]
var date = new Date(ts * 1000),
date_text = ""
if (date.getDate() == now.getDate()) date_text = "сегодня"
else if (dif < 172800) date_text = "вчера"
else if (dif > 31536000) date_text = date.getDate() + " " + months[date.getMonth()] + " " + date.getFullYear()
else date_text = date.getDate() + " " + months[date.getMonth()]
return date_text + " в " + date.getHours() + ":" + ("0" + date.getMinutes()).slice(-2)
}
}
function plural(num, one, two, three) {
if (num % 10 == 1 && num % 100 != 11)
return one
else if (num % 10 >= 2 && num % 10 <= 4 && (num % 100 < 10 || num % 100 >= 20))
return two
else
return three
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
You can’t perform that action at this time.