【问题标题】:Display Today-Tomorrow as per date from server根据服务器的日期显示今天-明天
【发布时间】:2018-06-20 08:19:22
【问题描述】:

我想根据从服务器收到的日期显示今天或明天..

我的日期格式是 2018 年 6 月 22 日星期四 10:00:00 GMT+0530

我想显示 Tomorrow 而不是 Thu Jun 22 2018 10:00:00 GMT+0530

【问题讨论】:

  • 你在用时刻吗? momentjs.com
  • 是的,我正在使用 momentjs

标签: javascript date datetime react-native


【解决方案1】:

您可以获取返回的服务器日期字符串,将其转换为 Date 对象,然后递增或递减日期以获取明天或昨天:

var dateServerReturned = 'Fri Jun 22 2018 10:00:00 GMT+0530'; // <-- in this example case

var dateServerToHandleTomorrow = new Date(dateServerReturned);
var dateServerToHandleYesterday = new Date(dateServerReturned);
var tomorrow = new Date(dateServerToHandleTomorrow.setDate(dateServerToHandleTomorrow.getDate()+1));
var yesterday = new Date(dateServerToHandleYesterday.setDate(dateServerToHandleYesterday.getDate()-1));

【讨论】:

    【解决方案2】:

    你应该尝试使用

    moment.fromNow(date)
    

    【讨论】:

    • fromNow 只给出“几秒钟前”而不是实际的日期差异
    【解决方案3】:

    好吧,所以试着检查日期是今天还是明天来显示。贝娄是我的方式,希望对您有所帮助。

    global.REFERENCE = moment(); 
    global.TODAY = global.REFERENCE.clone().startOf('day');
    global.YESTERDAY = global.REFERENCE.clone().subtract(1, 'days').startOf('day');
    global.A_WEEK_OLD = global.REFERENCE.clone().startOf('isoweek');
    
    export function formatDate(time) {
        let momentDate = moment(time);
        if (isToday(momentDate)) {
            return momentDate.format('LT');
        } else if (isYesterday(momentDate)) {
            return getIntl().formatMessage(Messages.yesterday);
        } else if (isWithinAWeek(momentDate)) {
            return momentDate.format('dddd');
        }
        return momentDate.format('l');
    }
    
    export function isToday(momentDate) {
        return momentDate.isSame(global.TODAY, 'd');
    }
    
    export function isYesterday(momentDate) {
        return momentDate.isSame(global.YESTERDAY, 'd');
    }
    
    export function isWithinAWeek(momentDate) {
        return momentDate.isAfter(global.A_WEEK_OLD);
    }
    
    export function isTwoWeeksOrMore(momentDate) {
        return !isWithinAWeek(momentDate);
    }
    

    【讨论】:

      【解决方案4】:

      如果您使用时刻,请关注....

      Math.abs(moment('pass your server date here').diff(moment(new Date()),‘days’))===0? ‘Today’: Math.abs(moment('pass your server date here').diff(moment(new Date()),‘days’))===1?'Tomorrow':'Anything else'

      【讨论】:

      • moment() 已经返回当前日期的对象,不需要使用moment(new Date())。还可以考虑将 diff 的结果分配给变量,而不是调用它两次。
      • 并且使用Math.abs 将导致昨天的日期也显​​示“明天”
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-07-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多