时间转化Java中封装了Calendar类,其中可以获取年月日时分秒星期几等。
本次只是记录开发中时间转换的util方法
private String getScheduledTime(Context context, long second) {
StringBuilder timeBuffer = new StringBuilder();
long timeLong = System.currentTimeMillis() + second * 1000;
boolean isHoleDay = DateFormat.is24HourFormat(context.getApplicationContext());
Calendar calendar = Calendar.getInstance();
calendar.setTimeInMillis(timeLong);
int dayIndex = calendar.get(Calendar.AM_PM);
int dayDiff = getDayDiff(calendar);
if (dayDiff == 1) {
timeBuffer.append("明天"));
} else if (dayDiff > 1) {
String[] weekList = new String[]{"", "星期日", "星期一", "星期二", "星期三", "星期四", "星期五", "星期六"};
String weekStr = weekList[calendar.get(Calendar.DAY_OF_WEEK)];
timeBuffer.append(weekStr);
}
String ampm = "";
int hour = calendar.get(Calendar.HOUR);
if (isHoleDay) {
if (dayIndex != 0) {
hour += 12;
}
} else {
if (hour == 0 && dayIndex == 1) {
ampm = "中午";
} else if (hour < 6) {
ampm = dayIndex == 0 ? "凌晨" : "下午";
} else {
ampm = dayIndex == 0 ? "上午" : "晚上";
}
}
int min = calendar.get(Calendar.MINUTE);
String minStr;
if (min < 10) {
minStr = "0" + min;
} else {
minStr = String.valueOf(min);
}
String hourStr;
/*
* 下午0点转换成12点
* 如果当前小时数为0 则转换为12
*/
if (!isHoleDay) {
hour = hour == 0 ? 12 : hour;
}
if (isHoleDay && hour < 10) {
hourStr = "0" + hour;
} else {
hourStr = String.valueOf(hour);
}
String time = hourStr + ":" + minStr;
if (timeBuffer.length() > 0 || ampm.length() > 0) {
timeBuffer.append(ampm).append(" ").append(time);
} else {
timeBuffer.append(ampm).append(time);
}
return timeBuffer.toString();
}
private int getDayDiff(Calendar day) {
Calendar today = Calendar.getInstance();
today.setTimeInMillis(System.currentTimeMillis());
int dayDiff = day.get(Calendar.DAY_OF_YEAR);
if (day.get(Calendar.YEAR) != today.get(Calendar.YEAR)) {
dayDiff += getDaysInYear(today.get(Calendar.YEAR));
}
int todayDiff = today.get(Calendar.DAY_OF_YEAR);
return dayDiff - todayDiff;
}
private int getDaysInYear(int years) {
Calendar cal = Calendar.getInstance();
cal.set(years, Calendar.DECEMBER, 31);
return cal.get(Calendar.DAY_OF_YEAR);
}
下面为kotlin代码
fun getScheduledTime(context: Context, second: Long): String {
val timeBuffer = StringBuilder()
val timeLong = System.currentTimeMillis() + second * 1000
val isHoleDay = is24HourFormat(context.applicationContext)
val calendar = Calendar.getInstance()
calendar.timeInMillis = timeLong
val dayIndex = calendar.get(Calendar.AM_PM)
val dayDiff = getDayDiff(calendar)
if (dayDiff == 1) {
timeBuffer.append("明天")
} else if (dayDiff > 1) {
val weekList = arrayOf("", "星期日", "星期一", "星期二", "星期三", "星期四", "星期五", "星期六")
val whatDay = weekList[calendar.get(Calendar.DAY_OF_WEEK)]
timeBuffer.append(whatDay)
}
var ampm = ""
var hour = calendar.get(Calendar.HOUR)
if (isHoleDay) {
if (dayIndex != 0) {
hour += 12
}
} else {
ampm = if (hour == 0 && dayIndex == 1) {
"中午"
} else if (hour < 6) {
if (dayIndex == 0) {
"凌晨"
} else {
"下午"
}
} else {
if (dayIndex == 0) {
"上午"
} else {
"晚上"
}
}
}
val min = calendar.get(Calendar.MINUTE)
val minStr = if (min < 10) {
"0$min"
} else {
min.toString()
}
if (!isHoleDay && hour == 0) {
hour = 12
}
/*
* 下午0点转换成12点
* 如果当前小时数为0 则转换为12
*/
val hourStr = if (isHoleDay && hour < 10) {
"0$hour"
} else {
hour.toString()
}
val time = "$hourStr:$minStr"
if (timeBuffer.isNotEmpty() || ampm.isNotEmpty()) {
timeBuffer.append(ampm).append(" ").append(time)
} else {
timeBuffer.append(ampm).append(time)
}
return timeBuffer.toString()
}
private fun getDayDiff(day: Calendar): Int {
val today = Calendar.getInstance()
today.timeInMillis = System.currentTimeMillis()
var dayDiff = day[Calendar.DAY_OF_YEAR]
if (day[Calendar.YEAR] !== today[Calendar.YEAR]) {
dayDiff += getDaysInYear(today[Calendar.YEAR])
}
val todayDiff = today[Calendar.DAY_OF_YEAR]
return dayDiff - todayDiff
}
private fun getDaysInYear(years: Int): Int {
val cal: Calendar = Calendar.getInstance()
cal.set(years, Calendar.DECEMBER, 31)
return cal.get(Calendar.DAY_OF_YEAR)
}
只是开发记录,如有需求可以根据此方法做衍生