57

我正在尝试到达和离开日期,其中ToDate将有前一个日期,FromDate并将有当月的第一个日期。一月份会是1/1/2013这样。如何正确获取当月的第一个日期?我做不到。

today.add(Calendar.DAY_OF_MONTH, -1);
java.util.Date previousDay=today.getTime();
ToDate = sdfFile1.format(newjava.sql.Date(previousDay.getTime()));
today.add(Calendar.DATE, 1);
java.util.Date nextDay=today.getTime();
FromDate = sdfFile1.format(new java.sql.Date(nextDay.getTime()));
4

11 回答 11

112

尝试

    Calendar c = Calendar.getInstance();   // this takes current date
    c.set(Calendar.DAY_OF_MONTH, 1);
    System.out.println(c.getTime());       // this returns java.util.Date

更新(自 Java 8 起):

import java.time.LocalDate;
LocalDate todaydate = LocalDate.now();
System.out.println("Months first date in yyyy-mm-dd: " +todaydate.withDayOfMonth(1));
于 2013-01-09T16:37:33.173 回答
27
于 2015-11-08T05:11:12.850 回答
7
Calendar date = Calendar.getInstance();
date.set(Calendar.DAY_OF_MONTH, 1);
于 2013-01-09T16:37:46.813 回答
3

乔达时间

如果我正确理解了这个问题,可以使用 joda time 轻松完成

LocalDate fromDate = new LocalDate().withDayOfMonth(1);
LocalDate toDate = new LocalDate().minusDays(1);
于 2016-06-08T18:59:40.663 回答
2

您可以使用java8withDayOfMonth(int dayOfMonth)中的方法返回月份的第一天:

LocalDate firstDay = LocalDate.now().withDayOfMonth(1);
System.out.println(firstDay);   // 2019-09-01
于 2019-09-17T09:19:42.610 回答
1

如果您还希望将时间设置为 0,则代码为:

import java.util.*;
import java.text.*;

public class DateCalculations {
  public static void main(String[] args) {

    Calendar aCalendar = Calendar.getInstance();

    aCalendar.set(Calendar.DATE, 1);
    aCalendar.set(Calendar.HOUR_OF_DAY, 0);
    aCalendar.set(Calendar.MINUTE, 0);
    aCalendar.set(Calendar.SECOND, 0);

    Date firstDateOfCurrentMonth = aCalendar.getTime();

    SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss zZ");
    sdf.setTimeZone(TimeZone.getTimeZone("UTC"));

    String dayFirst = sdf.format(firstDateOfCurrentMonth);
    System.out.println(dayFirst);
  }
}

您无需编译即可轻松在线查看: http ://www.browxy.com/

于 2017-12-04T08:44:15.783 回答
0

奇迹般有效!

public static String  getCurrentMonthFirstDate(){
    Calendar c = Calendar.getInstance();   
    c.set(Calendar.DAY_OF_MONTH, 1);
    DateFormat df = new SimpleDateFormat("MM-dd-yyyy");
    //System.out.println(df.format(c.getTime())); 
    return df.format(c.getTime());
}

//更正:输出=02-01-2018在此处输入图像描述

于 2018-02-07T12:27:19.133 回答
0
import java.util.Date;
import java.text.SimpleDateFormat;

...
Date currentMonth = new Date();
String yyyyMM = new SimpleDateFormat("yyyyMM").format(currentMonth);
Date firstDateOfMonth = new SimpleDateFormat("yyyyMM").parse(yyyyMM);
...

我的愚蠢解决方案。但这对我有用:D

于 2020-07-17T08:27:24.983 回答
0

为了得到一个日期(以后可以在 JPA 中使用),我做了

Date startOfMonth = Date.from(LocalDate.now().withDayOfMonth(1).atStartOfDay().toInstant(ZoneOffset.UTC));
  • 我取当前日期 LocalDate.now()
  • 使用DayOfMonth(1) 将其移至该月的第一天
  • 在StartOfDay() 将它移到当天的sart,以摆脱小时和分钟
  • 并通过将其更改为具有“正确”ZoneOffset 的 Instant 来处理 TimeZone 问题。
于 2020-10-02T14:33:41.113 回答
0

在 Java 8 中,您可以使用:

LocalDate date = LocalDate.now(); //2020-01-12
date.withDayOfMonth(1); //2020-01-01
于 2021-01-12T18:24:45.940 回答
0

日期的月份的第一天:

public static Date firstDayOfMonth(Date d) {
    
    Calendar calendar = new GregorianCalendar();
    calendar.setTime(d);
    calendar.set(Calendar.DAY_OF_MONTH, 1);
    
    return calendar.getTime();  
}
于 2021-02-21T10:02:23.900 回答