Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 日期时间转换器_Android_Timestamp - Fatal编程技术网

Android 日期时间转换器

Android 日期时间转换器,android,timestamp,Android,Timestamp,我有一个字符串中响应的时间戳,我试图将其转换为显示时间 然而,我的转换器有一个问题,它比当前时间晚了1小时,1天,等等 例如,当我在这里发布问题时,这个给定的时间戳1610959169显示的是18小时前的。事实上,我必须在线转换,它是19小时前在中给出结果的 请检查下面转换类的代码片段 object DateTimeConvertUtil { private val SECOND_MILLIS = 1000 private val MINUTE_MILLIS = 60 * SECOND_MILL

我有一个字符串中响应的时间戳,我试图将其转换为显示时间

然而,我的转换器有一个问题,它比当前时间晚了1小时,1天,等等

例如,当我在这里发布问题时,这个给定的时间戳
1610959169
显示的是
18小时前的
。事实上,我必须在线转换,它是19小时前在
中给出结果的

请检查下面转换类的代码片段

object DateTimeConvertUtil {
private val SECOND_MILLIS = 1000
private val MINUTE_MILLIS = 60 * SECOND_MILLIS
private val HOUR_MILLIS = 60 * MINUTE_MILLIS
private val DAY_MILLIS = 24 * HOUR_MILLIS
private val WEEK_MILLIS = 7 * DAY_MILLIS

fun getCreatedTime(givenTime: Long, isShowingWeek: Boolean? = false): String? {
    var time = givenTime
    if (time < 1000000000000L) {
        time *= 1000
    }
    val now = System.currentTimeMillis()
    if (time > now || time <= 0) {
        return null
    }
    val diff = now - time
    when {
        diff < MINUTE_MILLIS -> return "Just now"
        diff < 2 * MINUTE_MILLIS -> return "a minute ago"
        diff < 50 * MINUTE_MILLIS -> return "${diff / MINUTE_MILLIS} minutes ago"
        diff < 90 * MINUTE_MILLIS -> return "an hour ago"
        diff < 24 * HOUR_MILLIS -> return "${diff / HOUR_MILLIS} hours ago"
        diff < 48 * HOUR_MILLIS -> return "Yesterday"
        diff < 7 * DAY_MILLIS -> return "${diff / DAY_MILLIS} days ago"
        else -> {
            return if (isShowingWeek!!) {
                when {
                    diff / WEEK_MILLIS <= 1 -> "${diff / WEEK_MILLIS} week ago"
                    diff / WEEK_MILLIS <= 52 -> "${diff / WEEK_MILLIS} weeks ago"
                    diff / WEEK_MILLIS <= 104 -> "a year ago"
                    else -> "2 years ago"
                }
            } else {
                showDate(time.toString())
            }
        }
    }
}
object DateTimeConvertUtil{
私有值秒=1000
私有值分钟=60*秒
私人val小时=60*分钟
私人val日=24*小时
私人val周=7*天
fun getCreatedTime(给定时间:长,isShowingWeek:布尔?=false):字符串{
变量时间=给定时间
如果(时间<10000000000L){
时间*=1000
}
val now=System.currentTimeMillis()
如果(时间>现在| |时间返回“刚才”
差异<2*分钟\u毫秒->返回“一分钟前”
diff<50*分钟\u毫秒->返回“${diff/MINUTE\u毫秒}分钟前”
差异<90*分钟->返回“一小时前”
差异<24*HOUR\u MILLIS->返回“${diff/HOUR\u MILLIS}小时前”
差异<48*小时\u毫秒->返回“昨天”
diff<7*天\u毫秒->返回“${diff/天\u毫秒}天前”
其他->{
如果返回(isShowingWeek!!){
什么时候{
差异/周数“${diff/周数}周前”
diff/周_-MILLIS“${diff/周_-MILLIS}周前”
“一年前”的差异/周
else->“2年前”
}
}否则{
showDate(time.toString())
}
}
}
}

请帮我解决这个问题。谢谢。

以前使用过这个课程

public class TimeAgo {
    public final static String monthAgo = " Month z";
    public final static String monthsAgo = " Months ago";

    public final static String weekAgo = " Week ago";
    public final static String weeksAgo = " Weeks ago";

    public final static String daysAgo = " Days ago";
    public final static String dayAgo = " Day ago";

    public final static String hourAgo = " Hour ago";
    public final static String hoursAgo = " Hours ago";

    public final static String minAgo = " Min ago";
    public final static String minsAgo = " Mins ago";

    public final static String secsAgo = " Secs ago";
    public final static String secAgo = "Just Now";
    static int second = 1000; // milliseconds
    static int minute = 60;
    static int hour = minute * 60;
    static int day = hour * 24;
    static int week = day * 7;
    static int month = day * 30;
    static int year = month * 12;

    public static String DateDifference(long fromDate) {
        long diff = 0;
        long ms2 = System.currentTimeMillis();
        // get difference in milli seconds
        diff = ms2 - fromDate;

        int diffInSec = Math.abs((int) (diff / (second)));
        String difference = "";
        if (diffInSec < minute) {
            if (diffInSec <= 1) {

                difference = secAgo;

            } else {
                difference = diffInSec + secsAgo;
            }
        } else if ((diffInSec / hour) < 1) {
            if ((diffInSec / minute) <= 1) {
                difference = (diffInSec / minute) + minAgo;
            } else {
                difference = (diffInSec / minute) + minsAgo;
            }
        } else if ((diffInSec / day) < 1) {
            if ((diffInSec / hour) <= 1) {
                difference = (diffInSec / hour) + hourAgo;
            } else {
                difference = (diffInSec / hour) + hoursAgo;
            }

        } else if ((diffInSec / week) < 1) {
            if ((diffInSec / day) <= 1) {
                difference = (diffInSec / day) + dayAgo;
            } else {
                difference = (diffInSec / day) + daysAgo;
            }
        } else if ((diffInSec / month) < 1) {
            if ((diffInSec / week) <= 1) {
                difference = (diffInSec / week) + weekAgo;
            } else {
                difference = (diffInSec / week) + weeksAgo;
            }

        } else if ((diffInSec / year) < 1) {
            if ((diffInSec / month) <= 1) {
                difference = (diffInSec / month) + monthAgo;
            } else {
                difference = (diffInSec / month) + monthsAgo;
            }
        } else {
            // return date
            Calendar c = Calendar.getInstance();
            c.setTimeInMillis(fromDate);

            SimpleDateFormat format_before = new SimpleDateFormat(
                    "yyyy-MM-dd HH:mm:ss");

            difference = format_before.format(c.getTime());
        }
        Log.e("time difference is: ", "" + difference);
        return difference;
    }
}
尝试更改以下内容:

diff < MINUTE_MILLIS -> return "Just now"
diff < 2 * MINUTE_MILLIS -> return "a minute ago"
diff < 50 * MINUTE_MILLIS -> return "${diff / MINUTE_MILLIS} minutes ago"
diff < 90 * MINUTE_MILLIS -> return "an hour ago"
diff < 24 * HOUR_MILLIS -> return "${diff / HOUR_MILLIS} hours ago"
diff返回“刚才”
差异<2*分钟\u毫秒->返回“一分钟前”
diff<50*分钟\u毫秒->返回“${diff/MINUTE\u毫秒}分钟前”
差异<90*分钟->返回“一小时前”
差异<24*HOUR\u MILLIS->返回“${diff/HOUR\u MILLIS}小时前”

diff返回“刚才”
差异<2*分钟\u毫秒->返回“一分钟前”
diff<60*分钟\u毫秒->返回“${diff/MINUTE\u毫秒}分钟前”
差异<24*HOUR\u MILLIS->返回“${diff/HOUR\u MILLIS}小时前”
您需要将50更改为60,并移除<90的复选框,它将正常工作。您也可以在此处参考:


val-date=date(timeStamp*1000)val-ago=DateUtils.getRelativeTimeSpanString(date.time,System.currentTimeMillis(),DateUtils.minutes_IN_MILLIS,DateUtils.FORMAT_ABBREV_ALL).toString()
试试看this@Raghunandan--你的建议很好。但是如果我们想显示实际的措辞,我们需要调整文本输出。无论如何,谢谢你的评论。祝你愉快。哦,对了,措辞不同这是一个极好的答案。此外,如果你能加上显示年份的内容,它可能比这门课所能展示的更完美w各种各样的时间安排。谢谢。是的,我肯定会继续等待看到你修改的代码来显示年份。
diff < MINUTE_MILLIS -> return "Just now"
diff < 2 * MINUTE_MILLIS -> return "a minute ago"
diff < 50 * MINUTE_MILLIS -> return "${diff / MINUTE_MILLIS} minutes ago"
diff < 90 * MINUTE_MILLIS -> return "an hour ago"
diff < 24 * HOUR_MILLIS -> return "${diff / HOUR_MILLIS} hours ago"
diff < MINUTE_MILLIS -> return "Just now"
diff < 2 * MINUTE_MILLIS -> return "a minute ago"
diff < 60 * MINUTE_MILLIS -> return "${diff / MINUTE_MILLIS} minutes ago"
diff < 24 * HOUR_MILLIS -> return "${diff / HOUR_MILLIS} hours ago"