Java 自动更新聊天时间
我们怎样才能有时间 例如: 1分钟前Java 自动更新聊天时间,java,android,time,Java,Android,Time,我们怎样才能有时间 例如: 1分钟前 1秒前 今天 昨天 星期二 7天前(1周前)必须显示日期。如果您要保存日期,您可以使用句点: DateTime myDate = new DateTime(1978, 3, 26, 12, 35, 0, 0); DateTime now = new DateTime(); Period period = new Period(myDate, now); PeriodFormatter formatter = new PeriodFormatterBuild
1秒前
今天
昨天
星期二
7天前(1周前)必须显示日期。如果您要保存日期,您可以使用句点:
DateTime myDate = new DateTime(1978, 3, 26, 12, 35, 0, 0);
DateTime now = new DateTime();
Period period = new Period(myDate, now);
PeriodFormatter formatter = new PeriodFormatterBuilder()
.appendSeconds().appendSuffix(" seconds ago\n")
.appendMinutes().appendSuffix(" minutes ago\n")
.appendHours().appendSuffix(" hours ago\n")
.appendDays().appendSuffix(" days ago\n")
.appendWeeks().appendSuffix(" weeks ago\n")
.appendMonths().appendSuffix(" months ago\n")
.appendYears().appendSuffix(" years ago\n")
.printZeroNever()
.toFormatter();
String elapsed = formatter.print(period);
System.out.println(elapsed);
印刷品:
3 seconds ago
51 minutes ago
7 hours ago
6 days ago
10 months ago
31 years ago
我使用DateUtils.getRelativeTimeSpanString()做了类似的事情 它将在>1周的日期返回
public String timeSinceNow(Date date) {
long test = date.getTime();
String result = "";
long millis = System.currentTimeMillis();
long milliseconds = (millis - test);
long minutes = 0;
long hours = 0;
long days = 0;
days = (int) (milliseconds / (1000 * 60 * 60 * 24));
hours = (int) ((milliseconds - (1000 * 60 * 60 * 24 * days)) / (1000 * 60 * 60));
minutes = (int) (milliseconds - (1000 * 60 * 60 * 24 * days) - (1000 * 60 * 60 * hours)) / (1000 * 60);
if (days > 0 || hours > 0 || minutes > 0) {
if (hours > 0) {
if (minutes > 0) {
if (days == 0) {
if (hours == 0) {
if (minutes < 3) {
result = "Now";
} else {
result = (String) DateUtils.getRelativeTimeSpanString(test, System.currentTimeMillis(), 0);
}
} else {
result = (String) DateUtils.getRelativeTimeSpanString(test, System.currentTimeMillis(), 0);
}
}
else{
result = (String) DateUtils.getRelativeTimeSpanString(test, System.currentTimeMillis(), 0);
}
}else{
result = (String) DateUtils.getRelativeTimeSpanString(test, System.currentTimeMillis(), 0);
}
}else{
result = (String) DateUtils.getRelativeTimeSpanString(test, System.currentTimeMillis(), 0);
}
} else {
result = "Now";
}
return result;
}
公共字符串timeSinceNow(日期){
长测试=date.getTime();
字符串结果=”;
长毫秒=System.currentTimeMillis();
长毫秒=(毫秒-测试);
长分钟=0;
长时间=0;
长天数=0;
天数=(整数)(毫秒/(1000*60*60*24));
小时=(整数)((毫秒-(1000*60*60*24*天))/(1000*60*60));
分钟=(整数)(毫秒-(1000*60*60*24*天)-(1000*60*60*小时))/(1000*60);
如果(天>0 | |小时>0 | |分钟>0){
如果(小时数>0){
如果(分钟>0){
如果(天数==0){
如果(小时==0){
如果(分钟<3){
result=“现在”;
}否则{
结果=(字符串)DateUtils.getRelativeTimeSpanString(test,System.currentTimeMillis(),0);
}
}否则{
结果=(字符串)DateUtils.getRelativeTimeSpanString(test,System.currentTimeMillis(),0);
}
}
否则{
结果=(字符串)DateUtils.getRelativeTimeSpanString(test,System.currentTimeMillis(),0);
}
}否则{
结果=(字符串)DateUtils.getRelativeTimeSpanString(test,System.currentTimeMillis(),0);
}
}否则{
结果=(字符串)DateUtils.getRelativeTimeSpanString(test,System.currentTimeMillis(),0);
}
}否则{
result=“现在”;
}
返回结果;
}
这将返回一个字符串,其中包含“Now”和您作为参数传递的日期之间的差值类似问题已在此处多次询问,请在询问之前使用搜索…感谢您的所有回复,可能会重复,但我需要一次实现多个功能,因此我在此处搜索时仅使用ago方法,没有用一种方式显示一个小时前或者一起约会这就是为什么,我需要在这里问这个问题,非常感谢,很高兴我能帮上忙。