如何在Java的sellingAnimals方法中传入YYYY-MM-DD格式的当前日期?
如何给setSellingDate传入YYYY-MM-DD格式的当前日期?
嘿,我刚好处理过类似的需求,给你两种实用的方案参考:
方案一:直接在调用处生成格式后的日期(无需额外函数)
如果不想额外写函数,完全可以直接在调用setSellingDate()的时候,用Java的日期API生成符合格式的字符串传进去。从Java 8开始,官方推荐用java.time包下的新日期类,比旧的Date/Calendar好用太多,还能避免线程安全问题:
修改你的代码如下:
import java.time.LocalDate; import java.time.format.DateTimeFormatter; public static void sellingAnimals(int animalschoosen) { // 定义固定的日期格式器 DateTimeFormatter dateFormatter = DateTimeFormatter.ofPattern("yyyy-MM-dd"); // 获取当前日期并格式化为指定字符串 String formattedCurrentDate = LocalDate.now().format(dateFormatter); // 传入setSellingDate方法 pets.get(animalschoosen).setSellingDate(formattedCurrentDate); }
这里要注意:你需要确认setSellingDate()方法的参数类型是String。如果它原本设计为接收LocalDate对象,那更简单——直接传LocalDate.now()就行,不需要做字符串格式化。
方案二:封装成工具函数(复用性更高)
如果这个YYYY-MM-DD格式的日期在项目里多个地方都要用,把生成逻辑封装成工具函数会更省心,避免重复造轮子:
先写一个静态工具方法(可以放在专门的工具类里,比如DateUtils):
import java.time.LocalDate; import java.time.format.DateTimeFormatter; public class DateUtils { // 全局复用的格式器,避免重复创建实例 private static final DateTimeFormatter YYYY_MM_DD_FORMATTER = DateTimeFormatter.ofPattern("yyyy-MM-dd"); public static String getCurrentDateAsYyyyMmDd() { return LocalDate.now().format(YYYY_MM_DD_FORMATTER); } }
然后在你的业务方法里直接调用:
public static void sellingAnimals(int animalschoosen) { pets.get(animalschoosen).setSellingDate(DateUtils.getCurrentDateAsYyyyMmDd()); }
这样以后其他地方需要同样格式的日期,直接调用这个工具方法就好,维护起来也方便。
补充:Java 8之前的兼容方案
如果你的项目还在使用Java 8之前的版本,只能用SimpleDateFormat,但要注意它不是线程安全的,多线程场景下不要共用同一个实例:
import java.text.SimpleDateFormat; import java.util.Date; public static void sellingAnimals(int animalschoosen) { SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); String currentDate = sdf.format(new Date()); pets.get(animalschoosen).setSellingDate(currentDate); }
不过还是强烈建议升级到Java 8及以上版本,用java.time包的API,既安全又简洁。
内容的提问来源于stack exchange,提问作者High5
相关产品推荐
相关产品推荐

