2017-08-16 92 views
-2

这是我的Java代码查找当前月/日,我们在:如何在Java中查找当前月份长度?

import java.text.DateFormat; 
import java.text.SimpleDateFormat; 
import java.util.Date; 

public class GetCurrentDateTime { 

private static final DateFormat sdf = new SimpleDateFormat("MM-dd"); 


public static void main(String[] args) { 

    Date date = new Date(); 
    System.out.println(sdf.format(date)); 

    } 
} 

我想这个代码到别的做一些事情。当代码找到我们所在的月份时,我也希望它找到月份的长度。结果应该是这样的:

08-16 
31 

你能帮我吗?谢谢。

+2

肯定。我们很乐意帮助你。但只有当我们看到你已经尽力解决这个问题。 –

+0

@TAsk对于Stack Overflow的所有问题,这不是必需的。 –

+4

可能重复[特定年份的特定月份的天数?](https://stackoverflow.com/questions/8940438/number-of-days-in-particular-month-of-particular-year) – Lemonov

回答

1

你可以尝试这样的事情,但我认为,有可能是一个更好的办法:

Date date = new Date(); 
System.out.println(sdf.format(date)); 
Calendar c = Calendar.getInstance(); 
c.setTime(date); 
System.out.println(c.getActualMaximum(Calendar.DAY_OF_MONTH)); 

输出是这样的:

08-16 
31 

编辑:
作为写在评论:

使用从罗勒YearMonth.now().lengthOfMonth()解决方案,这是一个更好的方法比这

+0

使用Basil'YearMonth.now().lengthOfMonth()'的解决方案,这是一个比这更好的方法。 – StefanPG

+0

真的,是时候把这个'Calendar'类放在一个盒子里,然后把它放在阁楼后面,以便被忽略和遗忘。 –

+0

对我感到羞耻,当我写解决方案时,我甚至不知道ZoneId/YearMonth。但你是对的,这是一个更好,更清晰的方式。 – StefanPG

4

TL;博士

YearMonth.now() 
     .lengthOfMonth() 

详细

避免在看到问题的麻烦旧日期时间类。现在由java.time类取代。

时区对确定今天的日期以及确定当前月份至关重要。对于任何特定的时刻,日期在全球各地按照地区而不同。

ZoneId z = ZoneId.of("America/Montreal") ; 
YearMonth ym = YearMonth.now(z) ; 
int daysInMonth = ym.lengthOfMonth() ; 
0

也许是:

@Test 
    public void daysOfMonthTest() throws Exception { 
    Calendar mycal = new GregorianCalendar(); 

    assertEquals(
      31, 
      mycal.getActualMaximum(Calendar.DAY_OF_MONTH)); 
    } 
0

注:月是0(一月)到11(月)编号。

使用简单的Date对象:

 Date date = new Date(); 
     int month = date.getMonth() + 1; 
     int year = date.getYear()+1900; 
     System.out.print(month+"-"+year); 

输出:

8-2017 

使用日历对象:

 Date date = new Date(); // your date 
    Calendar cal = Calendar.getInstance(); 
    cal.setTime(date); 
    int year = cal.get(Calendar.YEAR); 
    int month = cal.get(Calendar.MONTH); 
    int day = cal.get(Calendar.DAY_OF_MONTH) + 1; 
    System.out.print(month+"-"+year); 
    System.out.print("Number of days: "+cal.getActualMaximum(Calendar.DAY_OF_MONTH)); 

输出:

8-2017 
Number of days: 31 

使用JodaTime:

DateTime dateTime = new DateTime(); 
    System.out.print(dateTime.getMonthOfYear()+"-"+(dateTime.getYear())); 
    System.out.print("Number of days: "+ dateTime.dayOfMonth().getMaximumValue()); 

输出:

8-2017 
Number of days: 31 
+1

这是如何显示当月的天数? –

+0

@ScaryWombat更新,请检查 –

相关问题