>function SinceWhen(receivedDate, currentDate, language) { > const ONE_SECOND = 1000; > const ONE_MINUTE = ONE_SECOND * 60; > const ONE_HOUR = ONE_MINUTE * 60; > const ONE_DAY = ONE_HOUR * 24; > > const SECOND_EN = "second"; > const MINUTE_EN = "minute"; > const HOUR_EN = "hour"; > const DAY_EN = "day"; > const NOW_EN = "Just now"; > const YESTERDAY_EN = "Yesterday"; > > const SECOND_FR = "seconde"; > const MINUTE_FR = "minute"; > const HOUR_FR = "heure"; > const DAY_FR = "jour"; > const NOW_FR = "à l'instant"; > const YESTERDAY_FR = "hier"; > > var junk > , ms = currentDate - receivedDate; > , elapsedDays = parseInt(ms / ONE_DAY,10) > , elapsedHours = parseInt(ms / ONE_HOUR,10) > , elapsedMinutes = parseInt(ms / ONE_MINUTE, 10) > , elapsedSeconds = parseInt(ms / ONE_SECOND, 10) > ; > > return language == 1 > ? (elapsedDays > 0 > ? (elapsedDays === 1 > ? YESTERDAY_EN > : getString(DAY_EN, elapsedDays, 1) > ) > : (elapsedHours > 0 > ? getString(HOUR_EN, elapsedHours, 1) > : (elapsedMinutes > 0 > ? getString(MINUTE_EN, elapsedMinutes, 1) > : (elapsedSeconds > 10 > ? getString(SECOND_EN, elapsedSeconds, 1) > : NOW_EN > ) > ) > ) > ) > : (elapsedDays > 0 > ? (elapsedDays === 1 > ? YESTERDAY_FR > : getString(DAY_FR, elapsedDays) > ) > : (elapsedHours > 0 > ? getString(HOUR_FR, elapsedHours) > : (elapsedMinutes > 0 > ? getString(MINUTE_FR, elapsedMinutes) > : (elapsedSeconds > 10 > ? getString(SECOND_FR, elapsedSeconds) > : NOW_FR > ) > ) > ) > ) > ; >} > >function getString(span, length, language) { > return language == 1 > ? (length === 1 > ? "One " + span + " ago" > : length + " " + span + "s ago" > ) > : "Il y a " + (length === 1 > ? "un" + (span === 'DAY_FR' ? '' : 'e') + " " + span > : length + " " + span + "s" > ) > ; >} >>
function SinceWhen(receivedDate, currentDate, language) { >> const ONE_SECOND = 1000; >> const ONE_MINUTE = ONE_SECOND * 60; >> const ONE_HOUR = ONE_MINUTE * 60; >> const ONE_DAY = ONE_HOUR * 24; >> >> const SECOND = "second"; >> const MINUTE = "minute"; >> const HOUR = "hour"; >> const DAY = "day"; >> const NOW = "Just now"; >> const YESTERDAY = "Yesterday"; >> >> var retstring = ""; >> >> var elapsedDays = parseInt((currentDate - receivedDate) / ONE_DAY,10); >> if (elapsedDays > 0) { >> if (elapsedDays === 1){ >> retstring = YESTERDAY; >> } else { >> retString = getString(DAY, elapsedSeconds); >> } >> } else { >> var elapsedHours = parseInt( (currentDate - receivedDate) / ONE_HOUR,10); >> if (elapsedHours > 0) { >> retString = getString(HOUR, elapsedSeconds); >> } else { >> var elapsedMinutes = parseInt((currentDate - receivedDate) / ONE_MINUTE, 10); >> if (elapsedMinutes > 0) { >> retString = getString(MINUTE, elapsedSeconds); >> } else { >> var elapsedSeconds = parseInt((currentDate - receivedDate) / ONE_SECOND, 10); >> if (elapsedSeconds < 10) { >> retstring = NOW >> } else { >> retString = getString(SECOND, elapsedSeconds); >> } >> } >> } >> } >> return retstring; >> } >> >> function getString(span, length) { >> if (length === 1) { >> return "One " + span + " ago"; >> } else { >> return length + " " + span + "s ago"; >> } >> }Not properly tested :-} Not dealing with the language issue (which could be handled in the getString() method) But I'm not sure it would improve performance - manipulating the DOM is probably taking most of the time.