Java Android:如何从服务器日期构建自日期
我有以下代码将服务器返回的日期字符串转换为自字符串Java Android:如何从服务器日期构建自日期,java,android,date,Java,Android,Date,我有以下代码将服务器返回的日期字符串转换为自字符串 /** * Change date format to "since" string * */ public static String timeSince(String dateString) { Date date = stringToDate(dateString); String result = (DateUtils.getRelativeTimeSpanString(date.getTime())).toString
/**
* 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;
}
但是,举个例子,如果我打电话
时间自(“2016-07-04T07:21:39.575Z”)我得到的结果是“2016年7月4日”,而不是像“3天前”或与现在时间相关的任何其他时间。知道为什么吗?Thx…试试这个:
Date now = new Date();
String str = DateUtils.getRelativeDateTimeString(
this, // Suppose you are in an activity or other Context subclass
now.getTime(), // The time to display
DateTimeUtils.MINUTE_IN_MILLIS, // The resolution. This will display only
// minutes (no "3 seconds ago")
DateTimeUtils.WEEK_IN_MILLIS, // The maximum resolution at which the time will switch
// to default date instead of spans. This will not
// display "3 weeks ago" but a full date instead
0); // Eventual flags
分钟单位和年单位的其他值包括:
- 百万分之二
- 每分钟
- 小时(百万分之一)
- 以百万计的日
- 一周
- 年单位:百万
DateUtils.getRelativeTimeSpanString(yourContext, theEventInMillis,
DateUtils.MINUTE_IN_MILLIS,
DateUtils.FORMAT_NO_NOON);
这将格式化相对于系统当前时间的通风量。它将以分钟为单位显示更改(0分钟前、2分钟前、3小时前、1天前等),直到差异达到一周,然后只发布完整日期
我希望这对你有帮助。好的。事实证明,DateUtils.getRelativeTimeSpanString(date.getTime())返回一个相对的持续时间(例如“昨天”或“30分钟前”),但如果持续时间大于一周,则返回一个绝对的(查看代码)日期…
文档中没有这样说。。。但这是事实。大多数安卓解决方案的另一个缺点是消息没有本地化(“3分钟前”不能用法语、西班牙语或任何其他语言)。因此,我可能会为此编写自己的库。
底线是,如果您使用英语并希望将日期显示为一周前的绝对日期,则上述代码有效。如果使用SimpleDataFormat(“yyyy-MM-dd”)?您确定这是所调用的代码吗?@Mohammaddrezakhatamihappens@ScaryWombat当然,我肯定。我一行一行地调试,得到了上面提到的结果它不是字符串,而是CharSequencewhy-1?这是GetRelativeDateTimeStrings的一种方法和一个简单示例我不知道谁投了反对票,但这并不能回答我的问题,即“为什么我的代码不起作用”?这是一个标准示例,您可以使用它来获得解决方案。似乎您的代码需要调试,所以您应该测试我的答案并改变您的方式。祝你好运