use*_*499 10 java calendar date
我想获得给定月份和年份的第一个日期和最后日期.我使用以下代码以yyyyMMdd格式获取最后一个日期.但是无法获得这种格式.然后我想以相同的格式开始日期.我还在努力.任何人都可以帮我修复下面的代码.
public static java.util.Date calculateMonthEndDate(int month, int year) {
int[] daysInAMonth = { 29, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 };
int day = daysInAMonth[month];
boolean isLeapYear = new GregorianCalendar().isLeapYear(year);
if (isLeapYear && month == 2) {
day++;
}
GregorianCalendar gc = new GregorianCalendar(year, month - 1, day);
java.util.Date monthEndDate = new java.util.Date(gc.getTime().getTime());
return monthEndDate;
}
public static void main(String[] args) {
int month = 3;
int year = 2076;
final java.util.Date calculatedDate = calculateMonthEndDate(month, year);
SimpleDateFormat format = new SimpleDateFormat("yyyyMMdd");
format.format(calculatedDate);
System.out.println("Calculated month end date : " + calculatedDate);
}
Run Code Online (Sandbox Code Playgroud)
Bas*_*que 14
java.time.YearMonthJava 8(教程)中的新java.time框架具有此命令.
名称恰当的::atDay课程代表一年中的一个月,没有任何特定的日期或时间.从那里我们可以要求第一天和第几天.
YearMonth yearMonth = YearMonth.of( 2015, 1 ); // January of 2015.
LocalDate firstOfMonth = yearMonth.atDay( 1 );
LocalDate last = yearMonth.atEndOfMonth();
Run Code Online (Sandbox Code Playgroud)
该java.time框架是建立在Java 8和更高版本.这些类取代麻烦的老传统日期时间类,如::atEndOfMonth,YearMonth,和java.util.Date.
现在处于维护模式的Joda-Time项目建议迁移到java.time类.
要了解更多信息,请参阅Oracle教程.并搜索Stack Overflow以获取许多示例和解释.规范是JSR 310.
您可以直接与数据库交换java.time对象.使用符合JDBC 4.2或更高版本的JDBC驱动程序.不需要字符串,不需要课程.Calendar
从哪里获取java.time类?
该ThreeTen-额外项目与其他类扩展java.time.该项目是未来可能添加到java.time的试验场.您可以在此比如找到一些有用的类SimpleDateFormat,java.sql.*,Interval,和更多.
小智 7
第一天:
Calendar.getInstance().getActualMinimum(Calendar.DAY_OF_MONTH);
Run Code Online (Sandbox Code Playgroud)
每月最后一天:
Calendar.getInstance().getActualMaximum(Calendar.DAY_OF_MONTH);
Run Code Online (Sandbox Code Playgroud)
SimpleDateFormat format = new SimpleDateFormat("yyyyMMdd");
format.format(calculatedDate);
System.out.println("Calculated month end date : " + calculatedDate);
Run Code Online (Sandbox Code Playgroud)
将其更改为
SimpleDateFormat format = new SimpleDateFormat("yyyyMMdd");
String formattedDate = format.format(calculatedDate);
System.out.println("Calculated month end date : " + formattedDate);
Run Code Online (Sandbox Code Playgroud)
更多细节
http://docs.oracle.com/javase/1.5.0/docs/api/java/text/DateFormat.html#format(java.util.Date)
另一种方法
package com.shashi.mpoole;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.GregorianCalendar;
public class DateMagic {
public static String PATTERN = "yyyyMMdd";
static class Measure
{
private int month;
private int year;
private Calendar calendar;
public Measure() {
// TODO Auto-generated constructor stub
init();
}
private void init() {
// TODO Auto-generated method stub
calendar = Calendar.getInstance();
calendar.set(year, month, 1);
}
public String min()
{
return format(calendar.getActualMinimum(Calendar.DAY_OF_MONTH));
}
public String max()
{
return format(calendar.getActualMaximum(Calendar.DAY_OF_MONTH));
}
private Date date(GregorianCalendar c)
{
return new java.util.Date(c.getTime().getTime());
}
private GregorianCalendar gc(int day)
{
return new GregorianCalendar(year, month, day);
}
private String format(int day) {
SimpleDateFormat format = new SimpleDateFormat(PATTERN);
return format.format(date(gc(day)));
}
public Measure month(int month) {
// TODO Auto-generated method stub
this.month = month -1 ;
return this;
}
public Measure year(int year) {
// TODO Auto-generated method stub
this.year = year;
return this;
}
}
public static void main(String[] args) {
Measure measure = new Measure().month(3).year(2076);
System.out.println(measure.max());
System.out.println(measure.min());
}
}
Run Code Online (Sandbox Code Playgroud)
获取开始日期
GregorianCalendar gc = new GregorianCalendar(year, month-1, 1);
java.util.Date monthEndDate = new java.util.Date(gc.getTime().getTime());
System.out.println(monthEndDate);
Run Code Online (Sandbox Code Playgroud)
(注意:在开始日期当天 = 1)
为格式化
SimpleDateFormat format = new SimpleDateFormat(/////////add your format here);
System.out.println("Calculated month end date : " + format.format(calculatedDate));
Run Code Online (Sandbox Code Playgroud)
您只需使用Calendar类.你应该为月份变量分配你想要的月份
Calendar gc = new GregorianCalendar();
gc.set(Calendar.MONTH, month);
gc.set(Calendar.DAY_OF_MONTH, 1);
Date monthStart = gc.getTime();
gc.add(Calendar.MONTH, 1);
gc.add(Calendar.DAY_OF_MONTH, -1);
Date monthEnd = gc.getTime();
SimpleDateFormat format = new SimpleDateFormat("yyyyMMdd");
System.out.println("Calculated month start date : " + format.format(monthStart));
System.out.println("Calculated month end date : " + format.format(monthEnd));
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
60150 次 |
| 最近记录: |