那些平台能传Date类型过去?
实际上,没有任何平台能直接传递Date类型到服务端,这是由JSON标准本身决定的:
JSON标准的限制
JSON规范只支持以下数据类型:
- 字符串 (string)
- 数字 (number)
- 布尔值 (boolean)
- null
- 对象 (object)
- 数组 (array)
JSON中没有原生的Date类型!
各平台的实际做法
1. JavaScript/Web
// 看起来像传Date,实际上:
JSON.stringify(new Date()) // "2023-12-07T10:30:00.000Z" (字符串)
JSON.stringify({date: Date.now()}) // {"date": 1701944200000} (时间戳数字)
2. iOS (Swift)
// 使用JSONEncoder时
encoder.dateEncodingStrategy = .iso8601 // 转为ISO字符串
encoder.dateEncodingStrategy = .millisecondsSince1970 // 转为时间戳数字
3. Android/Java
// Gson, Jackson等都是转换为字符串或数字
gson.toJson(new Date()) // "Dec 7, 2023 10:30:00 AM" 或时间戳
4. C# (.NET)
// System.Text.Json
JsonSerializer.Serialize(DateTime.Now) // "2023-12-07T10:30:00.000Z"
服务端的"Date类型"
当服务端说接收"Date类型"时,通常指:
- ISO 8601字符串:
"2023-12-07T10:30:00.000Z" - 时间戳数字:
1701944200000(毫秒) - 特定格式字符串:
"2023-12-07 10:30:00"
所以你的困惑是完全正常的,这是一个普遍的误解!所有平台最终都是传字符串或数字,没有例外。