您的位置:

java日历,日历Java

本文目录一览:

JAVA日历问题

/*

 做一个从1900年1月1日至今有效的日历,要求用户输入年份和月份即可显示出来。

 PS:瑞年366 平年365

 PS:至当天的总天数%7的结果就是当天是星期几

 4﹑6﹑9﹑11为小月30天,1﹑3﹑5﹑7﹑8﹑10﹑12为大月31天, 平年2月为28天,闰年2月为29天

 */

import java.util.Scanner;

public class Lin {

public static void main(String[] args) {

Scanner in=new Scanner(System.in);

System.out.println("请输入年份");

int year=in.nextInt();

System.out.println("请输入月份");

int mouth=in.nextInt();

int day=0;

int xiaoyue=0;

for(int i=1900;i=year-1;i++){

if(year%4==0year%100!=0||year%400==0){

day+=366;

}else{

day+=365;

}

}

for(int i=1;imouth-1;i++){

if(mouth==4||mouth==6||mouth==9||mouth==11){

day+=30;

}else{

day+=31;

xiaoyue=1;

}

}

day+=1;

int day1=day%7;

//原来代码

// System.out.println("日\t一\t二\t三\t四\t五\t六");

//新代码

System.out.print("日\t一\t二\t三\t四\t五\t六");

for(int i=1;i=day1;i++){

System.out.print("\t");

}

//原来代码

// for(int i=1;i=30;i++){

// if(day%7==6){

// System.out.print(i+"\n");

// }else{

// System.out.print(i+"\t");

// }

//

// }

// }

//新代码

for(int i=1;i=30;i++){

if((i+day1)%7==0){

System.out.print(i+"\n");

}else{

System.out.print(i+"\t");

}

}

}

}

以上是修改后的效果

提示你一下,你计算的日期对应的星期几不对

JAVA 日历

for(int i=0;ia.length;i++);//输出数组

{

int i = 0;

if(i%7==0)

System.out.println("");//换行

System.out.printf("%4s", a[i]);

}

这是你主函数的最后一个循环,出现了2个错误

for(int i=0;ia.length;i++);// 这里多了个分号

{

int i = 0;//这里重新定义了i

if(i%7==0)

System.out.println("");//换行

System.out.printf("%4s", a[i]);

}

Java中日历类(CalendarClass)的用途?

Java中日历类(Calendar类)的用途如下:

Calendar类的静态方法getInstance()可以初始化一个日历对象:Calendar now =         Calendar.getInstance();    

可以使用下面三个方法把日历定到任何一个时间:

     set(int year ,int month,int date)  ;

     set(int year ,int month,int date,int hour,int minute) ;

     set(int year ,int month,int date,int hour,int minute,int second) ;

如果想获得年份、月份、小时等信息可以使用:  

      Now.get(Calendar.Month);//这样的方法 0表示一月,1表示二月  

     get(Calendar.DAY_OF_MONTH);//获得这个月的第几天

     get(Calendar.DAY_OF_WEEK);//获得这个星期的第几天 

     get(Calendar.DAY_OF_YEAR);//获得这个年的第几天  

       getTimeMillis();//获得当前时间的毫秒表示

1.计算某一月份的最大天数

    Calendar time=Calendar.getInstance(); 

    time.clear(); 

    time.set(Calendar.YEAR,year); 

    time.set(Calendar.MONTH,i-1);//注意,Calendar对象默认一月为0             

    int day=time.getActualMaximum(Calendar.DAY_OF_MONTH);//本月份的天数

    注:在使用set方法之前,必须先clear一下,否则很多信息会继承自系统当前时间

    2.Calendar和Date的转化

    (1) Calendar转化为Date

    Calendar cal=Calendar.getInstance();

    Date date=cal.getTime();

    (2) Date转化为Calendar

    Date date=new Date();

    Calendar cal=Calendar.getInstance();

    cal.setTime(date);

    3.格式化输出日期时间

    Date date=new Date();

    SimpleDateFormat df=new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");

    System.out.println(df.format(date));

4.计算相隔天数的方法

    public int getDaysBetween (Calendar d1, Calendar d2){

      if (d1.after(d2)){  // swap dates so that d1 is start and d2 is end

           java.util.Calendar swap = d1;

           d1 = d2;

           d2 = swap;

      }

      int days = d2.get(Calendar.DAY_OF_YEAR) - d1.get(Calendar.DAY_OF_YEAR);

      int y2 = d2.get(Calendar.YEAR);

     if (d1.get(Calendar.YEAR) != y2){

           d1 = (Calendar) d1.clone();

           do{

             days += d1.getActualMaximum(Calendar.DAY_OF_YEAR);//得到当年的实际天数

               d1.add(Calendar.YEAR, 1);

          } while (d1.get(Calendar.YEAR) != y2);

      }

       return days;

    }

java编写日历

我给你贴上我在java核心技术中看到的代码吧,当然没有输入年份和月份,是按照当前时间创建的,写有我写的注释,应该能看的懂

/*

* 2012年5月13日10:37:58

* 日历程序

* Function:

* 显示当前月份的日历

* 总结

* 1. 0-11分别代表1-12月

* 1-7分别代表周日-周六

* 2. 使用GregorianCalendar对象的get方法(参数)获取月,日,年等信息

* 3.

*/

import java.text.DateFormatSymbols;

import java.util.*;

public class CalendarTest {

public static void main(String[] args) {

//construct d as current date构造一个日期

GregorianCalendar d = new GregorianCalendar();

//获取今天是这个月的第几天

int today = d.get(Calendar.DAY_OF_MONTH); //Calendar.DAY_OF_MONTH作为参数调用,得到今天是这个月的第几天

int month = d.get(Calendar.MONTH); //月份

d.set(Calendar.DAY_OF_MONTH, 1); //设置d的日期是本月的1号

int weekDay = d.get(Calendar.DAY_OF_WEEK); //获取当天位于本星期的第几天,也就确定了星期几,值的范围是1-7

int firstDayOfWeek = d.getFirstDayOfWeek(); //获取一星期的第一天,我们得到的是Calendar.SUNDAY,因为我们一星期的第一天是周日

int indent = 0; //为了定位本月第一天,定义索引

while (weekDay != firstDayOfWeek) {

//注意,月份用0-11代表1-12月,为了清晰起见,使用常量代替,下面获取月份得到的实际是当前月-1的值,所以我们要加1

//System.out.printf("当前星期的第%d天,位于当月的第%d天, 现在是%d月\n",

// weekDay, d.get(Calendar.DAY_OF_MONTH), d.get(Calendar.MONTH)+1); //Test Code

indent++;//缩进个数+1

d.add(Calendar.DAY_OF_MONTH, -1);//当前天数-1,如果现在是1号,则执行本条代码后,时间变为上一个月最后一天

weekDay = d.get(Calendar.DAY_OF_WEEK); //重新获取当天位于本星期的第几天

}

String[] weekDayNames = new DateFormatSymbols().getShortWeekdays();//获取简短形式的星期字符串数组

//System.out.println(weekDayNames.length);getShortWeekdays()得到的数组的长度是8,下标为0的是没有值1为星期日...7为星期六

//注释代码1

//Java核心技术的代码

/*

do {

//System.out.printf("%4s", weekDayNames[weekDay]); //经过上面定义索引,weekDay代表的是本星期日

d.add(Calendar.DAY_OF_MONTH, 1); //天数加1

weekDay = d.get(Calendar.DAY_OF_WEEK); //重新获得weekDay的值

} while (weekDay != firstDayOfWeek); //当循环完一个星期后,这里判断不成立,退出循环

*/

//我写的代码,替换上面注释代码1

for (int i=1; iweekDayNames.length; i++)//打印星期标题

System.out.printf("%3s\t", weekDayNames[i]);//引号内是一个全角的空格,因为是中文版,不是书上英文环境,中文和空格对于不上,这里我们用\t解决

//System.out.printf("%3s ", weekDayNames[i]); //方式2

System.out.println();//换行

for (int i=1; i=indent; i++)//确定一星期的一天位置,利用上面indent

System.out.printf("\t");//如用方式2,则这里内容是四个全角空格

//实现输出日期

d.set(Calendar.MONTH, month);

d.set(Calendar.DAY_OF_MONTH, 1);

do {

//print day

int day = d.get(Calendar.DAY_OF_MONTH);

System.out.printf("%3d", day);

if (day == today)

System.out.print("*");

System.out.print("\t");

d.add(Calendar.DATE, 1);//天数加1

weekDay = d.get(Calendar.DAY_OF_WEEK);//刷新weekDay

if (weekDay == firstDayOfWeek) //如果这天等于星期天则换行

System.out.println();

} while (d.get(Calendar.MONTH) == month);

}

}

JAVA中日历格式显示问题

你只要把if(week==now.get(Calendar.THURSDAY))改成if(week==Calendar.SUNDAY)就可以正确换行了。

另外,这一句int year=now.get(Calendar.DAY_OF_YEAR);

改成int year=now.get(Calendar.YEAR);

相应的输出System.out.println("今天是: "+(year+1846)+"年"+(month+1)+"月"+today+"日");

改成System.out.println("今天是: "+year+"年"+(month+1)+"月"+today+"日");