Android 在不同的设备中使用不同的时间

Android 在不同的设备中使用不同的时间,android,date,time,timezone,timeago,Android,Date,Time,Timezone,Timeago,我想获取一些数据的timeAgo,例如,我在大约三个小时前将一些数据插入数据库,但在不同时区的不同设备中,我看到的是不同的timeAgo 我该怎么办

我想获取一些数据的timeAgo,例如,我在大约三个小时前将一些数据插入数据库,但在不同时区的不同设备中,我看到的是不同的timeAgo

我该怎么办<这是我的代码

public static String timeAgo(long millis) {     
    long diff = new Date().getTime() - millis;
    Resources r = G.context.getResources();


    String prefix = r.getString(R.string.time_ago_prefix);
    String suffix = r.getString(R.string.time_ago_suffix);


    double seconds = Math.abs(diff) / 1000;
    double minutes = seconds / 60;
    double hours = minutes / 60;
    double days = hours / 24;
    double years = days / 365;


    String words;


    if (seconds < 45) {
        words = r.getString(R.string.time_ago_seconds, Math.round(seconds));
    } else if (seconds < 90) {
        words = r.getString(R.string.time_ago_minute, 1);
    } else if (minutes < 45) {
        words = r.getString(R.string.time_ago_minutes, Math.round(minutes));
    } else if (minutes < 90) {
        words = r.getString(R.string.time_ago_hour, 1);
    } else if (hours < 24) {
        words = r.getString(R.string.time_ago_hours, Math.round(hours));
    } else if (hours < 42) {
        words = r.getString(R.string.time_ago_day, 1);
    } else if (days < 30) {
        words = r.getString(R.string.time_ago_days, Math.round(days));
    } else if (days < 45) {
        words = r.getString(R.string.time_ago_month, 1);
    } else if (days < 365) {
        words = r.getString(R.string.time_ago_months, Math.round(days / 30));
    } else if (years < 1.5) {
        words = r.getString(R.string.time_ago_year, 1);
    } else {
        words = r.getString(R.string.time_ago_years, Math.round(years));
    }


    StringBuilder sb = new StringBuilder();


    if (prefix != null && prefix.length() > 0) {
        sb.append(prefix).append(" ");
    }


    sb.append(words);


    if (suffix != null && suffix.length() > 0) {
        sb.append(" ").append(suffix);
    }


    return sb.toString().trim();
}
publicstaticstringtimeago(长毫秒){
long diff=新日期().getTime()-millis;
Resources r=G.context.getResources();
字符串前缀=r.getString(r.String.time\u ago\u前缀);
字符串后缀=r.getString(r.String.time\u ago\u后缀);
双秒=数学绝对值(差值)/1000;
双分=秒/60;
双倍小时=分钟/60;
双日=小时/24;
两年=天/365;
字符串;
如果(秒<45){
words=r.getString(r.string.time\u ago\u seconds,Math.round(seconds));
}否则如果(秒<90){
words=r.getString(r.string.time\u ago\u minute,1);
}否则,如果(分钟<45){
words=r.getString(r.string.time_ago_minutes,Math.round(minutes));
}否则,如果(分钟<90){
words=r.getString(r.string.time\u ago\u hour,1);
}否则,如果(小时<24小时){
words=r.getString(r.string.time\u ago\u hours,Math.round(hours));
}否则,如果(小时数<42){
words=r.getString(r.string.time\u ago\u day,1);
}否则,如果(天数<30天){
words=r.getString(r.string.time\u ago\u days,Math.round(days));
}否则,如果(天数<45天){
words=r.getString(r.string.time\u ago\u month,1);
}否则如果(天数<365天){
words=r.getString(r.string.time\u ago\u months,Math.round(days/30));
}否则,如果(年<1.5){
words=r.getString(r.string.time\u ago\u year,1);
}否则{
words=r.getString(r.string.time\u ago\u years,Math.round(years));
}
StringBuilder sb=新的StringBuilder();
if(prefix!=null&&prefix.length()>0){
sb.append(前缀)。append(“”);
}
某人附加(字);
if(后缀!=null&&suffix.length()>0){
sb.append(“”)append(后缀);
}
使某人恢复原状;
}

请提供示例输入和输出,以便我们了解您的意思。(是否可能只是时钟出错的问题?)。避免这种情况的最佳方法是返回UTC格式的日期,并根据UTC计算这些时间,因为UTC不会随时区而变化。例如,这是数据库中的我的日期(timeAgo):2011年11月2日,设备中的日期是2016年11月2日,当前日期/时间是2015年11月2日,但在设备中显示我的日期是5年前(应该是4年前了,但是怎么会呢?)再次为我的英语感到抱歉