Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/367.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/date/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 将月份名称转换为日期范围_Java_Date - Fatal编程技术网

Java 将月份名称转换为日期范围

Java 将月份名称转换为日期范围,java,date,Java,Date,我需要将Monthname+Year转换为有效的日期范围。它需要与闰年等一起工作 示例 getDateRange("Feb",2015) 应找到范围2015-02-01--2015-02-28 而 getDateRange("Feb",2016) 如果在Java 8中找到范围2016-02-01--2016-02-29,可以使用 如果只有年和月,最好使用。从YearMonth可以很容易地得到该月的长度 YearMonth ym= YearMonth.of(2015, Month.F

我需要将Monthname+Year转换为有效的日期范围。它需要与闰年等一起工作

示例

getDateRange("Feb",2015)  
应找到范围
2015-02-01--2015-02-28

getDateRange("Feb",2016)  

如果在Java 8中找到范围
2016-02-01--2016-02-29

,可以使用

如果只有年和月,最好使用。从YearMonth可以很容易地得到该月的长度

 YearMonth ym= YearMonth.of(2015, Month.FEBRUARY);
 int monthLen= ym.lengthOfMonth();

在Java 8中,您可以使用

如果只有年和月,最好使用。从YearMonth可以很容易地得到该月的长度

 YearMonth ym= YearMonth.of(2015, Month.FEBRUARY);
 int monthLen= ym.lengthOfMonth();

Java8使得日期时间操作非常简单。 对于Java7及以下版本,您可以这样做

void getDate(String month, int year) throws ParseException {
    Date start = null, end = null;

    //init month and year
    SimpleDateFormat sdf = new SimpleDateFormat("MMM");
    Date parse = sdf.parse(month);
    Calendar instance = Calendar.getInstance();
    instance.setTime(parse);
    instance.set(Calendar.YEAR, year);

    //start is default first day of month
    start = instance.getTime();


    //calculate end
    instance.add(Calendar.MONTH, 1);
    instance.add(Calendar.DAY_OF_MONTH, -1);
    end = instance.getTime();

    System.out.println(start + " " + end);
}
2015年2月的产量为:


Java8使得日期时间操作非常简单。 对于Java7及以下版本,您可以这样做

void getDate(String month, int year) throws ParseException {
    Date start = null, end = null;

    //init month and year
    SimpleDateFormat sdf = new SimpleDateFormat("MMM");
    Date parse = sdf.parse(month);
    Calendar instance = Calendar.getInstance();
    instance.setTime(parse);
    instance.set(Calendar.YEAR, year);

    //start is default first day of month
    start = instance.getTime();


    //calculate end
    instance.add(Calendar.MONTH, 1);
    instance.add(Calendar.DAY_OF_MONTH, -1);
    end = instance.getTime();

    System.out.println(start + " " + end);
}
2015年2月的产量为:

尝试(未经测试):

public List getDateRange(YearMonth YearMonth){
List dateRange=new ArrayList();
IntStream.of(yearMonth.lengthOfMonth()).foreach(day->dateRange.add(yearMonth.at(day));
返回日期范围
}
尝试(未测试):

public List getDateRange(YearMonth YearMonth){
List dateRange=new ArrayList();
IntStream.of(yearMonth.lengthOfMonth()).foreach(day->dateRange.add(yearMonth.at(day));
返回日期范围
}

带有默认Java工具的Java 7解决方案:

public static void getDateRange(String shortMonth, int year) throws ParseException {
    SimpleDateFormat format = new SimpleDateFormat("MMM yyyy", Locale.ENGLISH);

    // the parsed date will be the first day of the given month and year
    Date startDate = format.parse(shortMonth + " " + year);

    Calendar calendar = Calendar.getInstance();
    calendar.setTime(startDate);
    // set calendar to the last day of this given month
    calendar.set( Calendar.DATE, calendar.getActualMaximum(Calendar.DATE));
    // and get a Date object
    Date endDate = calendar.getTime();

    // do whatever you need to do with your dates, return them in a Pair or print out
    System.out.println(startDate);
    System.out.println(endDate);
}

具有默认Java工具的Java 7解决方案:

public static void getDateRange(String shortMonth, int year) throws ParseException {
    SimpleDateFormat format = new SimpleDateFormat("MMM yyyy", Locale.ENGLISH);

    // the parsed date will be the first day of the given month and year
    Date startDate = format.parse(shortMonth + " " + year);

    Calendar calendar = Calendar.getInstance();
    calendar.setTime(startDate);
    // set calendar to the last day of this given month
    calendar.set( Calendar.DATE, calendar.getActualMaximum(Calendar.DATE));
    // and get a Date object
    Date endDate = calendar.getTime();

    // do whatever you need to do with your dates, return them in a Pair or print out
    System.out.println(startDate);
    System.out.println(endDate);
}

如前所述,Java8提供了新的日期API

但是,如果您不是在Java8环境下工作,那么这是一个很好的选择

// assuming you know the year and month already. Because every month starts from 1, there should be any problem to create 
Date fromDt = new Date(2014, 2, 1);  

// build a list containing each date from 2014-02-01 to 2014-02-28
List<Date> dates = Dates.from(fromDt).to(fromDt.lastDayOfMonth()).build();
//假设您已经知道年份和月份。因为每个月都从1开始,所以应该有任何问题需要创建
日期fromDt=新日期(2014年2月1日);
//建立一份包含2014-02-01至2014-02-28各日期的清单
列表日期=dates.from(fromDt).to(fromDt.lastDayOfMonth()).build();

Java8提供了上述新的日期API

但是,如果您不是在Java8环境下工作,那么这是一个很好的选择

// assuming you know the year and month already. Because every month starts from 1, there should be any problem to create 
Date fromDt = new Date(2014, 2, 1);  

// build a list containing each date from 2014-02-01 to 2014-02-28
List<Date> dates = Dates.from(fromDt).to(fromDt.lastDayOfMonth()).build();
//假设您已经知道年份和月份。因为每个月都从1开始,所以应该有任何问题需要创建
日期fromDt=新日期(2014年2月1日);
//建立一份包含2014-02-01至2014-02-28各日期的清单
列表日期=dates.from(fromDt).to(fromDt.lastDayOfMonth()).build();

你能使用Java 8和
LocalDate
吗?到目前为止你都尝试了什么?Java 8还可以。到目前为止,主要的问题是找出某个月的天数。我查看了Joda Time,但找不到tat做过的任何事情。我可能可以构造一些可以做到这一点的东西,但我希望我能找到一些alr已经编写并测试过了。你能使用Java 8和
LocalDate
?到目前为止你都做了些什么?Java 8还可以。到目前为止,主要的问题是找出某个月的天数。我查看了Joda Time,但找不到tat做过的任何事情。我可能可以构建一些可以做到这一点的东西,但我希望能找到一些这是已经编写和测试过的。太好了!不幸的是,我对Java8的了解让人尴尬,我想我必须花时间对它进行更多的研究。@Peteranderson注意,
Month.二月
来自一个枚举,因此是一个对象。因此,您可以将该对象作为方法之间的值传递,而不是字符串“Feb”示例:
getDateRange(2015年2月)
太棒了!不幸的是,我对Java8的了解让我感到尴尬,我想我必须花时间进一步研究一下。@Peteranderson注意,
Month.二月
来自一个枚举,因此是一个对象。因此,您可以将该对象作为方法之间的值传递,而不是字符串“Feb”。示例:
getDateRange(2015年2月)