接收日期参数
在 Tio-Boot 框架中,处理日期类型参数是开发中的常见场景。通过框架内置的类型转换功能,可以轻松地接收和处理前端传递的日期数据
Date
使用 Tio-Boot 框架处理 Date 类型参数
以下是一个简单的示例,演示如何在 Controller 中接收 Date 类型的参数。
示例代码
import java.util.Date;
import com.jfinal.kit.Kv;
import nexus.io.annotation.RequestPath;
import nexus.io.model.body.RespBodyVo;
@RequestPath("/base")
public class BaseController {
public RespBodyVo date(Date date) {
Kv kv = Kv.create();
kv.set("date", date);
return RespBodyVo.ok(kv);
}
}
在上面的代码中,BaseController 通过 date() 方法接收一个 java.util.Date 类型的参数。这个参数将由前端以特定格式传递,并自动转换为 Date 对象。
请求示例
前端请求可以如下发送:
date=2014-09-04 08:34:00
此请求将会传递一个日期字符串,该字符串将被 Tio-Boot 框架自动解析为 java.util.Date 对象,并传递给 date() 方法。
响应示例
服务端返回的响应数据可能如下所示:
{
"data": {
"date": "2014-09-04 08:34:00"
},
"ok": true,
"msg": null,
"code": 1
}
在响应中,data 字段包含了请求传递的日期值。这个日期数据可以用于进一步的业务逻辑处理或直接返回给前端。
明确业务时区和日历日期
对于“今天”“明天”等相对日期,先确定业务时区,再按日历日期加减。LocalDate 表示日期,Instant 表示时间点;将 Clock 作为参数便于固定时间测试,也避免依赖服务器默认时区。以下工具可以由 Service 调用,不需要改变框架的请求参数绑定。
import java.time.Clock;
import java.time.LocalDate;
import java.time.ZoneId;
public final class BusinessDateUtils {
private static final ZoneId BUSINESS_ZONE = ZoneId.of("Asia/Shanghai");
private BusinessDateUtils() {
}
public static LocalDate tomorrow(Clock clock) {
return LocalDate.now(clock.withZone(BUSINESS_ZONE)).plusDays(1);
}
}
import java.time.Clock;
import java.time.Instant;
import java.time.LocalDate;
import java.time.ZoneOffset;
public class BusinessDateExample {
public static void main(String[] args) {
Clock clock = Clock.fixed(Instant.parse("2026-10-10T16:30:00Z"), ZoneOffset.UTC);
LocalDate date = BusinessDateUtils.tomorrow(clock);
System.out.println(date); // 2026-10-12
}
}
业务响应宜返回明确的日期字符串;含出发和到达时间的业务需要分别保留完整日期、时间和时区偏移。价格与日期等外部数据应在应用服务中校验实际响应字段,不能只依据请求 URL 推断结果。
