Skip to content

接收日期参数 ​

在 Tio-Boot 框架中,处理日期类型参数是开发中的常见场景。通过框架内置的类型转换功能,可以轻松地接收和处理前端传递的日期数据

Date ​

使用 Tio-Boot 框架处理 Date 类型参数 ​

以下是一个简单的示例,演示如何在 Controller 中接收 Date 类型的参数。

示例代码 ​

java
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() 方法。

响应示例 ​

服务端返回的响应数据可能如下所示:

json
{
  "data": {
    "date": "2014-09-04 08:34:00"
  },
  "ok": true,
  "msg": null,
  "code": 1
}

在响应中,data 字段包含了请求传递的日期值。这个日期数据可以用于进一步的业务逻辑处理或直接返回给前端。

明确业务时区和日历日期 ​

对于“今天”“明天”等相对日期,先确定业务时区,再按日历日期加减。LocalDate 表示日期,Instant 表示时间点;将 Clock 作为参数便于固定时间测试,也避免依赖服务器默认时区。以下工具可以由 Service 调用,不需要改变框架的请求参数绑定。

java
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);
  }
}
java
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 推断结果。

MIT Licensed