java - Android:如何从服务器日期开始构建

标签 java android date

我有以下代码将服务器返回的日期字符串转换为 since 字符串。

/**
* Change date format to "since" string
* */
public static String timeSince(String dateString) {
    Date date = stringToDate(dateString);
    String result = (DateUtils.getRelativeTimeSpanString(date.getTime())).toString();
    return result;
}
/**
 * Function to convert server date string to Date
 * */
public static Date stringToDate(String s){
    DateFormat df = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss");
    try {
        return df.parse(s);
    } catch(ParseException e){
        e.printStackTrace();
    }
    return null;
}

但是,举个例子,如果我调用 timeSince("2016-07-04T07:21:39.575Z") 结果是“2016 年 7 月 4 日”,而不是“3 天前”或相对于现在时间的任何其他时间段。知道为什么吗?谢谢...

最佳答案

好的。事实证明,如果该持续时间为 < em>大于一周,在这种情况下它返回一个绝对(查看代码)日期...

文档中没有任何内容这么说......但这是事实。大多数 Android 解决方案的另一个缺点是消息未本地化(“3 分钟前”在法语、西类牙语或任何其他语言中均无效)。所以我可能最终会为此编写自己的库。

底线是,如果您使用英语并希望将日期显示为一周前的绝对日期,则上述代码有效。

关于java - Android:如何从服务器日期开始构建,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38343116/

相关文章:

php - 下个月在 PHP 中出错

c++ - 在类/对象中存储日期和时间的最佳做法是什么?

javascript - 比较日期从 - 到

java - 将参数从java传递到html以创建google图表

java - 如何使用 OpenCV4 和 Android Studio(kotlin) 删除 Unresolved reference 错误

android - 不必要; SDK_INT 总是 >= 21,而我的 minSdkVersion 是 16

java - LIBGDX - 纹理故障

java - 对象变量的变量类型是什么?

java - Java中注释的目的是什么?

java - DrawerLayout onDrawerClosed() 调用两次