常用日期时间工具总结

1、Java1.8引入的时间调节器类:TemporalAdjusters

import java.time.DayOfWeek;
import java.time.LocalDateTime;
import java.time.temporal.TemporalAdjusters;
import java.time.temporal.ChronoUnit;

/**
 * @Auther: 
 * @Description: 时间调节器类
 */
public class TemporalAdjusterTest {

    public static void main(String[] args) {
        LocalDateTime now = LocalDateTime.now();
        //获取当月第一天
        System.out.println("当月第一天:"+now.with(TemporalAdjusters.firstDayOfMonth()));
        //获取下月第一天
        System.out.println("下月第一天:"+now.with(TemporalAdjusters.firstDayOfNextMonth()));
        //获取明年第一天
        System.out.println("明年第一天:"+now.with(TemporalAdjusters.firstDayOfNextYear()));
        //获取本年第一天
        System.out.println("本年第一天:"+now.with(TemporalAdjusters.firstDayOfYear()));
        //获取当月最后一天
        System.out.println("当月最后一天:"+now.with(TemporalAdjusters.lastDayOfMonth()));
        //获取本年最后一天
        System.out.println("本年最后一天:"+now.with(TemporalAdjusters.lastDayOfYear()));
        //获取当月第三周星期五
        System.out.println("当月第三周星期五:"+now.with(TemporalAdjusters.dayOfWeekInMonth(3, DayOfWeek.FRIDAY)));
        //获取上周一
        System.out.println("上周一:"+now.with(TemporalAdjusters.previous(DayOfWeek.MONDAY)));
        //获取下周日
        System.out.println("下周日:"+now.with(TemporalAdjusters.next(DayOfWeek.SUNDAY)));
        //minus 获取上个月最后一天
        System.out.println("上个月最后一天:"+now.minus(1, ChronoUnit.MONTHS).with(TemporalAdjusters.lastDayOfMonth()));
        //plus 获取下个月最后一天
        System.out.println("下个月最后一天:"+now.plus(1, ChronoUnit.MONTHS).with(TemporalAdjusters.lastDayOfMonth()));
    }
}

2、自定义的

    /**
     * 获取指定日期当月的第一天
     * @param dateStr
     * @param format
     * @return
     */
    public static String getFirstDayOfGivenMonth(String dateStr,String format){
        SimpleDateFormat sdf = new SimpleDateFormat(format);
        try {
            Date date = sdf.parse(dateStr);
            Calendar calendar = Calendar.getInstance();
            calendar.setTime(date);
            calendar.set(Calendar.DAY_OF_MONTH,1);
            calendar.add(Calendar.MONTH, 0);
            return sdf.format(calendar.getTime());
        } catch (ParseException e) {
            e.printStackTrace();
        }
        return null;
    }

    /**
     * 获取指定日期下个月的第一天
     * @param dateStr
     * @param format
     * @return
     */
    public static String getFirstDayOfNextMonth(String dateStr,String format){
        SimpleDateFormat sdf = new SimpleDateFormat(format);
        try {
            Date date = sdf.parse(dateStr);
            Calendar calendar = Calendar.getInstance();
            calendar.setTime(date);
            calendar.set(Calendar.DAY_OF_MONTH,1);
            calendar.add(Calendar.MONTH, 1);
            return sdf.format(calendar.getTime());
        } catch (ParseException e) {
            e.printStackTrace();
        }
        return null;
    }

    /**
     * 把指定日期的年份 + 1,月日不变
     * @param dateStr
     * @param format
     * @return
     */
    public static String getAppointDayOfNextYear(String dateStr,String format){
        SimpleDateFormat sdf = new SimpleDateFormat(format);
        try {
            Date date = sdf.parse(dateStr);
            Calendar calendar = Calendar.getInstance();
            calendar.setTime(date);
            calendar.set(Calendar.DAY_OF_MONTH,1);
            calendar.add(Calendar.YEAR, 1);
            return sdf.format(calendar.getTime());
        } catch (ParseException e) {
            e.printStackTrace();
        }
        return null;
    }

    public static void main(String[] args){
        System.out.println(getAppointDayOfNextYear("2020-01-01", "yyyy-MM-dd"));
        System.out.println(getFirstDayOfNextMonth("2022-12-04", "yyyy-MM-dd"));
        System.out.println(getFirstDayOfGivenMonth("2021-02-27", "yyyy-MM-dd"));
    }

3、Hutool工具包:DateUtil

        具体使用可参考官方API:Hutool参考文档

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 在Spring Data MongoDB中,MongoTemplate提供了多种日期查询方式,以下是一些常用的方式: 1. 等于某个日期:可以使用Criteria.where和is操作符,例如: ``` Query query = new Query(); query.addCriteria(Criteria.where("date").is(new Date("2022-01-01"))); List<MyDocument> results = mongoTemplate.find(query, MyDocument.class); ``` 2. 大于某个日期:可以使用Criteria.where和gt操作符,例如: ``` Query query = new Query(); query.addCriteria(Criteria.where("date").gt(new Date("2022-01-01"))); List<MyDocument> results = mongoTemplate.find(query, MyDocument.class); ``` 3. 小于某个日期:可以使用Criteria.where和lt操作符,例如: ``` Query query = new Query(); query.addCriteria(Criteria.where("date").lt(new Date("2022-01-01"))); List<MyDocument> results = mongoTemplate.find(query, MyDocument.class); ``` 4. 范围查询:可以使用Criteria.where、gte和lte操作符,例如: ``` Query query = new Query(); query.addCriteria(Criteria.where("date").gte(new Date("2022-01-01")).lte(new Date("2022-01-31"))); List<MyDocument> results = mongoTemplate.find(query, MyDocument.class); ``` 5. 某一年/月/日查询:可以使用Criteria.where和andOperator操作符,例如: ``` Query query = new Query(); query.addCriteria(Criteria.where("date").andOperator( Criteria.where("year").is(2022), Criteria.where("month").is(1), Criteria.where("day").is(1) )); List<MyDocument> results = mongoTemplate.find(query, MyDocument.class); ``` 注意,上述日期格式均为Java Date类,如果需要使用其他格式,需要先将其转为Java Date类。 ### 回答2: MongoTemplate是Spring Data MongoDB的核心类之一,可以进行与MongoDB数据库的交互。当需要使用MongoTemplate进行日期查询时,可以通过使用Criteria对象或Query对象来实现。 一种常用的方法是使用Criteria对象。可以调用Criteria的方法来构建查询条件,如eq(等于)、ne(不等于)、lt(小于)、gt(大于)、lte(小于等于)、gte(大于等于)等。对于日期查询,可以使用以下方法: 1. eq(等于):使用Criteria.where("字段名").is(日期对象)。 例子:criteria.where("createDate").is(new Date()); 2. ne(不等于):使用Criteria.where("字段名").ne(日期对象)。 例子:criteria.where("createDate").ne(new Date()); 3. lt(小于):使用Criteria.where("字段名").lt(日期对象)。 例子:criteria.where("createDate").lt(new Date()); 4. gt(大于):使用Criteria.where("字段名").gt(日期对象)。 例子:criteria.where("createDate").gt(new Date()); 5. lte(小于等于):使用Criteria.where("字段名").lte(日期对象)。 例子:criteria.where("createDate").lte(new Date()); 6. gte(大于等于):使用Criteria.where("字段名").gte(日期对象)。 例子:criteria.where("createDate").gte(new Date()); 另外一种方法是使用Query对象。可以通过设置Query对象的Criteria属性来进行日期查询,如query.addCriteria(criteria)。然后使用MongoTemplate的find()方法执行查询操作,如mongoTemplate.find(query, 类.class)。 总结:对于日期查询,可以使用Criteria对象或Query对象来构建查询条件,然后通过MongoTemplate的find()方法执行查询操作。根据具体需要,可以使用eq、ne、lt、gt、lte、gte等方法来进行等于、不等于、小于、大于、小于等于、大于等于的日期查询。 ### 回答3: MongoTemplate是Spring Data MongoDB提供的操作MongoDB数据库的工具,可以实现与数据库的交互。使用MongoTemplate进行日期查询,可以通过以下几种方式实现: 1. 使用BasicQuery查询: 首先,我们需要使用BasicQuery对象创建查询条件。通过BasicQuery可以使用MongoDB的查询语法进行日期查询。 比如,我们想查询创建时间在某个时间段内的文档,可以使用下面的代码: ``` DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"); LocalDateTime startTime = LocalDateTime.parse("2022-01-01 00:00:00", formatter); LocalDateTime endTime = LocalDateTime.parse("2022-12-31 23:59:59", formatter); Criteria criteria = Criteria.where("createTime").gte(startTime).lte(endTime); Query query = new BasicQuery(criteria); List<Document> documents = mongoTemplate.find(query, Document.class, "collectionName"); ``` 2. 使用@Query注解查询: 另一种方式是使用@Query注解进行日期查询。在自定义的查询方法上使用@Query注解,可以编写MongoDB的查询语句。 比如,我们想查询某个日期之后创建的文档,可以使用下面的代码: ```java @Query("{'createTime': {$gte: ?0}}") List<Document> findByCreateTimeAfter(LocalDateTime createTime); ``` 然后在调用该方法即可获取结果: ```java List<Document> documents = mongoTemplate.findByCreateTimeAfter(LocalDateTime.parse("2022-01-01 00:00:00")); ``` 通过以上两种方式,我们可以使用MongoTemplate对MongoDB中的日期字段进行查询操作,根据具体需求选择合适的方式即可。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值