Вы можете вызвать getActivity()
или
public void onAttach(Context context) {
super.onAttach(context);
this.activity = (CashActivity) context;
this.money = this.activity.money;
}
Мой удар в этом на основе других ответов.
function timeSince(date) {
let minute = 60;
let hour = minute * 60;
let day = hour * 24;
let month = day * 30;
let year = day * 365;
let suffix = ' ago';
let elapsed = Math.floor((Date.now() - date) / 1000);
if (elapsed < minute) {
return 'just now';
}
// get an array in the form of [number, string]
let a = elapsed < hour && [Math.floor(elapsed / minute), 'minute'] ||
elapsed < day && [Math.floor(elapsed / hour), 'hour'] ||
elapsed < month && [Math.floor(elapsed / day), 'day'] ||
elapsed < year && [Math.floor(elapsed / month), 'month'] ||
[Math.floor(elapsed / year), 'year'];
// pluralise and append suffix
return a[0] + ' ' + a[1] + (a[0] === 1 ? '' : 's') + suffix;
}
function dateToHowManyAgo(stringDate){
var currDate = new Date();
var diffMs=currDate.getTime() - new Date(stringDate).getTime();
var sec=diffMs/1000;
if(sec<60)
return parseInt(sec)+' second'+(parseInt(sec)>1?'s':'')+' ago';
var min=sec/60;
if(min<60)
return parseInt(min)+' minute'+(parseInt(min)>1?'s':'')+' ago';
var h=min/60;
if(h<24)
return parseInt(h)+' hour'+(parseInt(h)>1?'s':'')+' ago';
var d=h/24;
if(d<30)
return parseInt(d)+' day'+(parseInt(d)>1?'s':'')+' ago';
var m=d/30;
if(m<12)
return parseInt(m)+' month'+(parseInt(m)>1?'s':'')+' ago';
var y=m/12;
return parseInt(y)+' year'+(parseInt(y)>1?'s':'')+' ago';
}
console.log(dateToHowManyAgo('2019-11-07 19:17:06'));
Это должно правильно обработать любую допустимую метку времени, включая Date.now (), исключительные единицы и будущие даты. Я не учел месяцы, но это должно быть легко включить. Я пытался сохранить это читаемым как возможное.
function getTimeInterval(date) {
let seconds = Math.floor((Date.now() - date) / 1000);
let unit = "second";
let direction = "ago";
if (seconds < 0) {
seconds = -seconds;
direction = "from now";
}
let value = seconds;
if (seconds >= 31536000) {
value = Math.floor(seconds / 31536000);
unit = "year";
} else if (seconds >= 86400) {
value = Math.floor(seconds / 86400);
unit = "day";
} else if (seconds >= 3600) {
value = Math.floor(seconds / 3600);
unit = "hour";
} else if (seconds >= 60) {
value = Math.floor(seconds / 60);
unit = "minute";
}
if (value != 1)
unit = unit + "s";
return value + " " + unit + " " + direction;
}
console.log(getTimeInterval(Date.now())); // 0 seconds ago
console.log(getTimeInterval(Date.now() + 1000)); // 1 second from now
console.log(getTimeInterval(Date.now() - 1000)); // 1 second ago
console.log(getTimeInterval(Date.now() + 60000)); // 1 minute from now
console.log(getTimeInterval(Date.now() - 120000)); // 2 minutes ago
console.log(getTimeInterval(Date.now() + 120000)); // 2 minutes from now
console.log(getTimeInterval(Date.now() + 3600000)); // 1 hour from now
console.log(getTimeInterval(Date.now() + 360000000000)); // 11 years from now
console.log(getTimeInterval(0)); // 49 years ago
функция timeSince (дата) {var секунды = Math.этаж ((new Date () - date) / 1000); var interval = Math.floor (секунды / 31536000); if (интервал> 1) {интервал возврата + "годы"; } interval = Math.floor (секунды / 2592000); if (interval> 1) {интервал возврата + "месяцы"; } interval = Math.floor (секунды / 86400); if (interval> 1) {интервал возврата + "дни"; } interval = Math.floor (секунд / 3600); if (interval> 1) {интервал возврата + "часы"; } interval = Math.floor (секунд / 60); if (interval> 1) {интервал возврата + "минуты"; } return Math.floor (секунды) + «секунды»; } var aDay = 24 * 60 * 60 * 1000 console.log (timeSince (новая дата (Date.now () - aDay))); console.log (timeSince (новая дата (Date.now () - aDay * 2)));
Я не проверял (хотя это было несложно), но я думаю, что сайты Stack Exchange используют плагин jquery.timeago
для создания этих временных строк .
Плагин довольно прост в использовании, он чист и обновляется автоматически.
Вот небольшой пример (с домашней страницы плагина):
Сначала загрузите jQuery и плагин:
Теперь прикрепим его к вашему отметки времени в DOM готовы:
jQuery (документ) .ready (function () {
jQuery ("abbr.timeago").давно(); });Это превратит все элементы
abbr
с классомtimeago
и ISO Отметка времени 8601 в заголовке:17 июля, 2008
примерно так:около года назад
, урожайность: около года назад. Как раз проходит, отметки времени будут автоматически обновлять.