Java 如何转换太阳2020年5月31日02:21:08 GMT+;0530改为;《泰晤士报》;或;“几小时前?”;?
我已将当前日期时间以这种格式保存在Firebase中,如图所示。此外,我已在应用程序中成功检索到它 但是,我如何才能将其更改为“时间前”、“分钟前”、“小时前”等。试试这个 步骤1:-使用此方法将时间字符串转换为毫秒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
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());