Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/385.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
Java 如何转换太阳2020年5月31日02:21:08 GMT+;0530改为;《泰晤士报》;或;“几小时前?”;?_Java_Android_Firebase_Firebase Realtime Database - Fatal编程技术网

Java 如何转换太阳2020年5月31日02:21:08 GMT+;0530改为;《泰晤士报》;或;“几小时前?”;?

Java 如何转换太阳2020年5月31日02:21:08 GMT+;0530改为;《泰晤士报》;或;“几小时前?”;?,java,android,firebase,firebase-realtime-database,Java,Android,Firebase,Firebase Realtime Database,我已将当前日期时间以这种格式保存在Firebase中,如图所示。此外,我已在应用程序中成功检索到它 但是,我如何才能将其更改为“时间前”、“分钟前”、“小时前”等。试试这个 步骤1:-使用此方法将时间字符串转换为毫秒 val date = "Sun May 31 2020 02:21:08 GMT+0530" val formatter: DateTimeFormatter = DateTimeFormatter.ofPattern("E

我已将当前日期时间以这种格式保存在Firebase中,如图所示。此外,我已在应用程序中成功检索到它

但是,我如何才能将其更改为“时间前”、“分钟前”、“小时前”等。

试试这个

步骤1:-使用此方法将时间字符串转换为毫秒

 val date = "Sun May 31 2020 02:21:08 GMT+0530"
            val formatter: DateTimeFormatter =
                DateTimeFormatter.ofPattern("EEE MMM dd HH:mm:ss z yyyy", Locale.ENGLISH)
            val localDate: LocalDateTime = LocalDateTime.parse(date, formatter)
            val timeInMilliseconds: Long =
                localDate.atOffset(ZoneOffset.UTC).toInstant().toEpochMilli()
步骤2:-使用此方法转换时间/小时

 fun showTimesAgo(time: String): String {
        val startDate = Date(time.toInt() * 1000L)
        val calendar = Calendar.getInstance()
        calendar.timeInMillis = startDate.time

        val now = Calendar.getInstance()
        var different = now.timeInMillis - calendar.timeInMillis

        val secondsInMilli: Long = 1000
        val minutesInMilli = secondsInMilli * 60
        val hoursInMilli = minutesInMilli * 60
        val daysInMilli = hoursInMilli * 24

        val elapsedDays = different / daysInMilli
        different %= daysInMilli

        val elapsedHours = different / hoursInMilli
        different %= hoursInMilli

        val elapsedMinutes = different / minutesInMilli
        different %= minutesInMilli

        if (elapsedDays > 0) {
            val calendar2 = Calendar.getInstance()
            calendar2.add(Calendar.DAY_OF_MONTH, -1)
            if (calendar2.get(Calendar.DATE) == calendar.get(Calendar.DATE)) {
                return "Yesterday"
            }
            return if (elapsedDays == 1L) "$elapsedDays day ago" else "$elapsedDays days ago"
        } else if (elapsedHours > 0) {
            return if (elapsedHours == 1L) "$elapsedHours hour ago" else "$elapsedHours hours ago"
        } else if (elapsedMinutes > 0) {
            return if (elapsedMinutes == 1L) "$elapsedMinutes minute ago" else "$elapsedMinutes minutes ago"
        }
        return "Just now"
    }
用法:-

var timesAgoString= showTimesAgo(timeInMilliseconds.toString())
适用于JAVA

String date = "Sun May 31 2020 02:21:08 GMT+0530";
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("EEE MMM dd HH:mm:ss z yyyy", Locale.ENGLISH);
LocalDateTime localDate = LocalDateTime.parse(date, formatter);
long timeInMilliseconds = localDate.atOffset(ZoneOffset.UTC).toInstant().toEpochMilli();
并使用此方法将时间转换为时间

public static String getTimeAgo(long time) {
   private final int SECOND_MILLIS = 1000;
    private final int MINUTE_MILLIS = 60 * SECOND_MILLIS;
    private final int HOUR_MILLIS = 60 * MINUTE_MILLIS;
    private final int DAY_MILLIS = 24 * HOUR_MILLIS;
        if (time < 1000000000000L) {
            time *= 1000;
        }

        long now = System.currentTimeMillis();
        if (time > now || time <= 0) {
            return null;
        }


        final long diff = now - time;
        if (diff < MINUTE_MILLIS) {
            return "just now";
        } else if (diff < 2 * MINUTE_MILLIS) {
            return "a minute ago";
        } else if (diff < 50 * MINUTE_MILLIS) {
            return diff / MINUTE_MILLIS + " minutes ago";
        } else if (diff < 90 * MINUTE_MILLIS) {
            return "an hour ago";
        } else if (diff < 24 * HOUR_MILLIS) {
            return diff / HOUR_MILLIS + " hours ago";
        } else if (diff < 48 * HOUR_MILLIS) {
            return "yesterday";
        } else {
            return diff / DAY_MILLIS + " days ago";
        }

如果您存储的是数字时间戳而不是字符串,这对您来说会容易得多。我如何才能做到这一点?我对Html和JS非常陌生。我不知怎么做到了这一点,我是一个Java用户,请在Java Sirok中发布我将更新答案Sirok现在检查我的答案
String timeAgo = getTimeAgo(timesharing.toLong());