gpt4 book ai didi

java - 获取前几个月的第一个和最后一个日期

转载 作者:行者123 更新时间:2023-12-01 23:38:29 25 4
gpt4 key购买 nike

我需要从数据库中查询上个月的数据。所以我需要上个月的第一个和最后一个日期才能进行“中间”SQL 查询。

当然,第一次约会总是从 1 开始,但硬编码看起来很糟糕。此外,对日期格式“dd-MM-yyyy” 进行硬编码似乎是一种不好的做法。有没有更简单的方法来做到这一点?现在我有一些业余但有效的东西,像这样:

        YearMonth thisMonth    = YearMonth.now();
YearMonth lastMonth = thisMonth.minusMonths(1);

String dd = Integer.toString(lastMonth.lengthOfMonth());
String mm = Integer.toString(lastMonth.getMonthValue());
String yyyy = Integer.toString(lastMonth.getYear());

String startDate = "01-" + mm + "-" + yyyy;
String endDate = dd + "-" + mm + "-" + yyyy;

System.out.println("startDate: " + startDate);
System.out.println("endDate: " + endDate);

最佳答案

以下调节器任您支配:

  1. TemporalAdjusters.firstDayOfMonth()

  2. TemporalAdjusters.lastDayOfMonth()

演示:

import java.time.LocalDate;
import java.time.temporal.TemporalAdjusters;

class Main {
public static void main(String[] args) {
// Today's date
LocalDate today = LocalDate.now();

LocalDate oneMonthAgo = today.minusMonths(1);

LocalDate firstDateOfLastMonth = oneMonthAgo.with(TemporalAdjusters.firstDayOfMonth());
LocalDate lastDateOfLastMonth = oneMonthAgo.with(TemporalAdjusters.lastDayOfMonth());

System.out.println(firstDateOfLastMonth);
System.out.println(lastDateOfLastMonth);
}
}

输出:

2020-11-01
2020-11-30

Trail: Date Time 了解有关现代日期时间 API 的更多信息.

如何使用Java 8 Date and Time API (JSR-310) 与 JDBC 4.2:

String query = "SELECT column_name(s)
FROM table_name
WHERE column_name BETWEEN ? AND ?";

PreparedStatement st = conn.prepareStatement(query);
st.setObject(1, firstDateOfLastMonth);
st.setObject(2, lastDateOfLastMonth);
st.executeQuery();

//...Process ResultSet

st.close();

关于java - 获取前几个月的第一个和最后一个日期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65249461/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com