本文目录一览:
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+"日");