慢吞云雾缓吐愁 发表于 2024-10-23 10:05:54

写代码被大语言模型坑之使用LocalDateTime比较两个时间差了几天

自从去年ChatGPT3.5发布后使用了几次,如今写代码基本上离不开它和它的衍生产品们了。一方面查资料很方便,快速提炼要点总结;另一方面想写什么样的代码一问就能天生出来,功能大差不差,稍微改改就能用,大大淘汰使用搜索引擎的时间,是新期间高阶版的Ctrl+C/V。
不过大语言模型归根揭底是靠训练集训练出来的,它给出的代码还是要自己测试一下用起来才放心,比如这次就被它坑了一把。
注:因种种原因,本文仅测试了一些国内的大语言模型,没有测试ChatGPT。
原始需求

某列表查询功能,入参包含一组起止日期,需要校验起止日期跨度小于等于200天。
前端传参现状

将用户选择的起止日期(yyyy-MM-dd)转换成"yyyy-MM-dd HH:mm:ss"格式的字符串,且起始时间是"yyyy-MM-dd 00:00:00",停止时间是"yyyy-MM-dd 23:59:59"。
比如,页面上选择从2024-09-01到2024-09-30,实际的入参是"2024-09-01 00:00:00"和"2024-09-30 23:59:59"。而且对于这组参数,时间跨度是30天,也就是说包括首尾的当天。
需求简化

为了便于测试,我先把时间跨度的要求改为2天,比如"2024-09-01 00:00:00"到"2024-09-02 23:59:59"的时间跨度正好是2天。需求可以简化为:
String sendDateBegin="2024-09-01 00:00:00"
String sendDateEnd="2024-09-02 23:59:59"
Java代码判断两个天数是否小于等于2天
kimi给的效果:
https://img2024.cnblogs.com/blog/228024/202410/228024-20241023091850265-1212898517.png
代码提取出来:
    public static void main(String[] args) {      String sendDateBegin = "2024-09-01 00:00:00";      String sendDateEnd = "2024-09-04 23:59:59";      DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");      LocalDateTime beginDate = LocalDateTime.parse(sendDateBegin, formatter);      LocalDateTime endDate = LocalDateTime.parse(sendDateEnd, formatter);      // 盘算时间差      Duration duration = Duration.between(beginDate, endDate);      // 获取天数差      long daysBetween = duration.toDays();      // 判断天数是否小于等于2      if (daysBetween
页: [1]
查看完整版本: 写代码被大语言模型坑之使用LocalDateTime比较两个时间差了几天