Android 如何使用设备'检查给定的日期是昨天还是一周的前一天;s时区
在我的应用程序中,我想检查从后端接收到的历元时间是今天的日期还是昨天的日期或一周中的前一天,以便相应地显示日期。如果它不符合这些条件,那么我只想显示日期 这里是我检查这些条件的逻辑Android 如何使用设备'检查给定的日期是昨天还是一周的前一天;s时区,android,date,datetime,timezone,timestamp,Android,Date,Datetime,Timezone,Timestamp,在我的应用程序中,我想检查从后端接收到的历元时间是今天的日期还是昨天的日期或一周中的前一天,以便相应地显示日期。如果它不符合这些条件,那么我只想显示日期 这里是我检查这些条件的逻辑 public static String pastTime(final Long epochTime) { if (TimeCalc.isToday(epochTime)) { return TimeCalc.getTime(epochTime); } else if (TimeCal
public static String pastTime(final Long epochTime) {
if (TimeCalc.isToday(epochTime)) {
return TimeCalc.getTime(epochTime);
} else if (TimeCalc.isYesterday(epochTime)) {
return YESTERDAY;
} else if (TimeCalc.isPreviousWeek(epochTime)) {
return TimeCalc.getDay(epochTime);
} else {
return generateDate(epochTime);
}
}
检查今天是否有:
public static boolean isToday(Long timestamp) {
Long todayMillis = System.currentTimeMillis();
SimpleDateFormat formatter = new SimpleDateFormat(Timestamp.ISO_8601_DATE);
Calendar calendar = Calendar.getInstance();
calendar.setTimeInMillis(timestamp);
String time = formatter.format(calendar.getTime());
calendar.setTimeInMillis(todayMillis);
String today = formatter.format(calendar.getTime());
return time.equals(today);
}
public static boolean isYesterday(Long timestamp) {
Long millisInADay = TimeUnit.DAYS.toMillis(1);
Long todayMillis = System.currentTimeMillis();
Long daysToday = todayMillis / millisInADay;
Long daysTime = timestamp / millisInADay;
if (daysTime == daysToday - 1) {
return true;
} else {
return false;
}
}
public static boolean isPreviousWeek(Long timestamp) {
Long millisInADay = TimeUnit.DAYS.toMillis(1);
Long todayMillis = System.currentTimeMillis();
Long daysToday = todayMillis / millisInADay;
Long daysTime = timestamp / millisInADay;
if (daysToday - daysTime <= 6) {
return true;
} else {
return false;
}
}
要查看昨天的信息:
public static boolean isToday(Long timestamp) {
Long todayMillis = System.currentTimeMillis();
SimpleDateFormat formatter = new SimpleDateFormat(Timestamp.ISO_8601_DATE);
Calendar calendar = Calendar.getInstance();
calendar.setTimeInMillis(timestamp);
String time = formatter.format(calendar.getTime());
calendar.setTimeInMillis(todayMillis);
String today = formatter.format(calendar.getTime());
return time.equals(today);
}
public static boolean isYesterday(Long timestamp) {
Long millisInADay = TimeUnit.DAYS.toMillis(1);
Long todayMillis = System.currentTimeMillis();
Long daysToday = todayMillis / millisInADay;
Long daysTime = timestamp / millisInADay;
if (daysTime == daysToday - 1) {
return true;
} else {
return false;
}
}
public static boolean isPreviousWeek(Long timestamp) {
Long millisInADay = TimeUnit.DAYS.toMillis(1);
Long todayMillis = System.currentTimeMillis();
Long daysToday = todayMillis / millisInADay;
Long daysTime = timestamp / millisInADay;
if (daysToday - daysTime <= 6) {
return true;
} else {
return false;
}
}
查看一周的前一天:
public static boolean isToday(Long timestamp) {
Long todayMillis = System.currentTimeMillis();
SimpleDateFormat formatter = new SimpleDateFormat(Timestamp.ISO_8601_DATE);
Calendar calendar = Calendar.getInstance();
calendar.setTimeInMillis(timestamp);
String time = formatter.format(calendar.getTime());
calendar.setTimeInMillis(todayMillis);
String today = formatter.format(calendar.getTime());
return time.equals(today);
}
public static boolean isYesterday(Long timestamp) {
Long millisInADay = TimeUnit.DAYS.toMillis(1);
Long todayMillis = System.currentTimeMillis();
Long daysToday = todayMillis / millisInADay;
Long daysTime = timestamp / millisInADay;
if (daysTime == daysToday - 1) {
return true;
} else {
return false;
}
}
public static boolean isPreviousWeek(Long timestamp) {
Long millisInADay = TimeUnit.DAYS.toMillis(1);
Long todayMillis = System.currentTimeMillis();
Long daysToday = todayMillis / millisInADay;
Long daysTime = timestamp / millisInADay;
if (daysToday - daysTime <= 6) {
return true;
} else {
return false;
}
}
public静态布尔值isPreviousWeek(长时间戳){
Long millisInADay=时间单位。天。托米利(1);
Long todayMillis=System.currentTimeMillis();
Long daysToday=今天毫秒/每天毫秒;
长日时间=时间戳/毫秒每天;
如果(daysToday-daysTime时间戳定义了一个特定的瞬间-时间线中的一个点
同一时刻可以对应不同时区中的不同日期和时间
示例:现在,此时,System.currentTimeMillis()
返回的时间戳值为1519050435812
。同一时刻表示:
- 2017年2月19日上午11:27在圣保罗
- 2017年2月19日伦敦下午2:27
- 2017年2月20日凌晨3:27在奥克兰
像“今天”和“当前时间”这样的概念是相对的,因为它们会根据你所在的地方(时区/地区/城市/国家/你所指的任何地方)而变化
时间戳是一个绝对值,因为它在世界各地都是相同的
将时间戳(绝对值)转换为日期和时间(相对概念)改变时区总是会改变最终结果-实际上,当你改变时区的时候,它的<强>预期会有不同的结果。这就是为什么我想在格式化时考虑设备的本地时区的原因。我不想在我的逻辑中指定任何特定的时区,而不是它。应该使用用户设备的时区。