本文目錄一覽:
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+”日”);
原創文章,作者:TVUN,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/139004.html