一个获取昨天日期的方法
很多东西,不记下来,真的就会随着项目的结束埋在项目里面了,真的需要随时记笔记!!这是今天曲线救国实现的效果,很无聊,先记下来再说!
爬虫的时候,发现在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,直接减一天,不再详述。