Android时间戳转换为星期几、上午、下午等

        时间转化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)
    }

只是开发记录,如有需求可以根据此方法做衍生

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值