一个获取昨天日期的方法

很多东西,不记下来,真的就会随着项目的结束埋在项目里面了,真的需要随时记笔记!!这是今天曲线救国实现的效果,很无聊,先记下来再说!

爬虫的时候,发现在url拼接中,url的日期传参时,有时候会由于是当天排行榜还没有实时总结出来,所以不能传当天的日期进去,而要传前一天的日期。

“https://www.qimai.cn/rank/marketRank/market/6/category/6/date/2022-04-10”

由于日期转型的内部细节有点复杂,所以简单粗暴直接用两部分拼起来,day的日期直接转int,再减1,再转string:

// https://api.qimai.cn/rank/marketRank?analysis=eA55THtZAEd%2BcwBILnNqByQbGkRRXlsfXVFCCFJHZwVWXnYTAQMEBQUBWwQKAFIAdRUB&market=6&category=6&date=2022-04-10
val yesterday_time_front = SimpleDateFormat("yyyy-MM-").format(Date())
val yesterday_time_back = (SimpleDateFormat("dd").format(Date()).toInt() - 1).toString()
val yesterday_time_full = yesterday_time_front + yesterday_time_back

但是碰到月初,1号减1就0了,就会出错,同理,碰到1月1号也会出错,于是开始具体判断年月日:

fun getYesterdayInMyForm(): String {
    val monthDaysNormal = arrayOf(31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31)

    val time_year = SimpleDateFormat("yyyy").format(Date()).toInt()
    val time_month = SimpleDateFormat("MM").format(Date()).toInt()
    val time_day = SimpleDateFormat("dd").format(Date()).toInt()
    var yesterday_time_year = time_year
    var yesterday_time_month = time_month
    var yesterday_time_day = time_day

    // 1月1号 -> 12月31日
    // 3月1日 -> 2月28日(29日)
    // 5月1日 -> 4月30日
    if (time_month == 1 && time_day == 1) {
        yesterday_time_year--
        yesterday_time_month = 12
        yesterday_time_day = 31
    } else if (time_month == 3 && time_day == 1) {
        if (yesterday_time_year % 4 == 0) {
            yesterday_time_month--
            yesterday_time_day = 29
        } else {
            yesterday_time_month--
            yesterday_time_day = 28
        }
    } else if (time_month != 3 && time_month != 1 && time_day == 1) {
        yesterday_time_month--
        yesterday_time_day = monthDaysNormal[time_month - 2]
    } else {
        yesterday_time_day--
    }
    return "$yesterday_time_year-$yesterday_time_month-$yesterday_time_day"
}

但是经过互联网搜索,发现可以直接将time减去一天的毫秒数,直接了当:

var today = Date(System.currentTimeMillis() - 1000 * 60 * 60 * 24)
var yesterday = SimpleDateFormat("yyyy-MM-dd").format(Date()) 

或者使用 Calendar,直接减一天,不再详述。