java日曆,JAVA日曆顯示初一

本文目錄一覽:

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中解釋一些日曆類(CalendarClass)中的重要方法?

Calendar類(理解)

Calendar類是採用手工的方式取得日期,可以通過此類精確到毫秒,此類的定義如下:

public abstract class Calendar extends Object

implements Serializable, Cloneable, ComparableCalendar

這個類本身是一個抽象類,抽象類要想實例化肯定使用子類:GregorianCalendar

package org.lxh.api.datedemo;

import java.util.Calendar;

import java.util.GregorianCalendar;

public class CalendarDemo {

public static void main(String[] args) {

Calendar calendar = new GregorianCalendar();

System.out.println(“YEAR: ” + calendar.get(Calendar.YEAR));

System.out.println(“MONTH: ” + (calendar.get(Calendar.MONTH) + 1));

System.out.println(“DATE: ” + calendar.get(Calendar.DATE));

System.out

.println(“HOUR_OF_DAY: ” + calendar.get(Calendar.HOUR_OF_DAY));

System.out.println(“MINUTE: ” + calendar.get(Calendar.MINUTE));

System.out.println(“SECOND: ” + calendar.get(Calendar.SECOND));

System.out

.println(“MILLISECOND: ” + calendar.get(Calendar.MILLISECOND));

}

}

但是現在有一個問題,如果每次取時間都按照這種方式取的話,那麼得累死,那麼能不能設計一個類,可以通過此

類直接取得時間呢,例如:現在給出了如下的一個接口:

package org.lxh.api.datedemo;

public interface DateTime {

/**

*取得日期

* @return 日期的字符串,例如:2009-12-22

*/

public String getDate() ;

/**

*取得日期時間

* @return 日期時間的字符串,例如:2009-12-22 11:06:23.345

*/

public String getDateTime() ;

/**

*取得時間戳

* @return 返回時間戳的字符串,例如:20091222110623345

*/

public String getTimeStamp() ;

}

前面需要補0的問題需要注意,例如:01。

package org.lxh.api.datedemo;

import java.util.Calendar;

import java.util.GregorianCalendar;

public class DateTimeImpl implements DateTime {

private Calendar calendar;

public DateTimeImpl() {

this.calendar = new GregorianCalendar();

}

public String getDate() {

StringBuffer buf = new StringBuffer();

buf.append(calendar.get(Calendar.YEAR)).append(“-“);

buf.append(this.addZero((calendar.get(Calendar.MONTH) + 1), 2)).append(“-“);

buf.append(this.addZero(calendar.get(Calendar.DATE), 2));

return buf.toString();

}

public String getDateTime() {

StringBuffer buf = new StringBuffer();

buf.append(calendar.get(Calendar.YEAR)).append(“-“);

buf.append(this.addZero((calendar.get(Calendar.MONTH) + 1), 2)).append(“-“);

buf.append(this.addZero(calendar.get(Calendar.DATE), 2)).append(” “);

buf.append(this.addZero(calendar.get(Calendar.HOUR_OF_DAY), 2)).append(“:”) ;

buf.append(this.addZero(calendar.get(Calendar.MINUTE), 2)).append(“:”) ;

buf.append(this.addZero(calendar.get(Calendar.SECOND), 2)).append(“.”) ;

buf.append(this.addZero(calendar.get(Calendar.MILLISECOND), 3)) ;

return buf.toString();

}

@Override

public String getTimeStamp() {

StringBuffer buf = new StringBuffer();

buf.append(calendar.get(Calendar.YEAR));

buf.append(this.addZero((calendar.get(Calendar.MONTH) + 1), 2));

buf.append(this.addZero(calendar.get(Calendar.DATE), 2));

buf.append(this.addZero(calendar.get(Calendar.HOUR_OF_DAY), 2));

buf.append(this.addZero(calendar.get(Calendar.MINUTE), 2)) ;

buf.append(this.addZero(calendar.get(Calendar.SECOND), 2)) ;

buf.append(this.addZero(calendar.get(Calendar.MILLISECOND), 3)) ;

return buf.toString();

}

private String addZero(int num, int len) {

StringBuffer buf = new StringBuffer();

buf.append(num);

while (buf.length() len) {

buf.insert(0, 0);

}

return buf.toString();

}

}

如何用JAVA寫日曆?

按照你的要求編寫的Java日曆驗證程序如下

UI.java

import java.util.Scanner;

public class UI {

 static Scanner sc=new Scanner(System.in);

 public static int askInt(String s){

  System.out.print(s);

  return sc.nextInt();

 }

 public static void println(String s){

  System.out.println(s);

 }

}

EE.java

public class EE {

 public void validateDateCore(){

  int year =UI.askInt(“Enter the year: “);

  int month=UI.askInt(“Enter the month: “);

  int day=UI.askInt(“Enter the day: “);

  if(year  1){

   UI.println(“The year is not a valid number.”);

   return;

  }

  if(month1 || month12){

   UI.println(“The month is not a valid number.”);

   return;

  }

  int monthDay=0;

  switch(month){

   case 1:

   case 3:

   case 5:

   case 7:

   case 8:

   case 10:

   case 12:monthDay=31;break;

   case 4:

   case 6:

   case 9:

   case 11:monthDay=30;break;

   case 2:

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

     monthDay=29;

    }else{

     monthDay=28;

    }

    break;

  }

  if(day1 || daymonthDay){

   UI.println(“The day is not a valid number.”);

   return;

  }else{

   UI.println(“It is “+day+”/”+month+”/”+year+”.”);

  }

 }

 public static void main(String[] args) {

  new EE().validateDateCore();

 }

}

運行結果

java如何在窗口中顯示日曆

MainFrame.java是顯示日曆程序,Clock.java是日曆計算程序(可以不要)。

編譯後運行MainFrame這個類即可。

 

swing窗口顯示萬年曆,jdk1.4以上環境編譯運行。

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133    package org.test;import java.awt.BorderLayout;import java.awt.Color;import java.awt.GridLayout;import java.awt.Toolkit;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import java.sql.Date;import java.util.Calendar;import javax.swing.JComboBox;import javax.swing.JFrame;import javax.swing.JLabel;import javax.swing.JPanel;public class MainFrame extends JFrame { private static final long serialVersionUID = -306484324260972141L; JPanel panel = new JPanel(new BorderLayout()); JPanel panel1 = new JPanel(); JPanel panel2 = new JPanel(new GridLayout(7, 7)); JPanel panel3 = new JPanel(); JLabel[] label = new JLabel[49]; JLabel y_label = new JLabel(“年份”); JLabel m_label = new JLabel(“月份”); JComboBox com1 = new JComboBox(); JComboBox com2 = new JComboBox(); int re_year, re_month, x_size, y_size; String year_num; Calendar now = Calendar.getInstance(); // 實例化Calendar   MainFrame() {  super(“萬年曆”);   setSize(300, 350);  x_size = (int) (Toolkit.getDefaultToolkit().getScreenSize().getWidth());  y_size = (int) (Toolkit.getDefaultToolkit().getScreenSize().getHeight());  setLocation((x_size – 300) / 2, (y_size – 350) / 2);  setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);  panel1.add(y_label);  panel1.add(com1);  panel1.add(m_label);  panel1.add(com2);  for (int i = 0; i  49; i++) {   label[i] = new JLabel(“”, JLabel.CENTER);// 將顯示的字符設置為居中    panel2.add(label[i]);  }  panel3.add(new Clock(this));  panel.add(panel1, BorderLayout.NORTH);  panel.add(panel2, BorderLayout.CENTER);  panel.add(panel3, BorderLayout.SOUTH);   panel.setBackground(Color.white);  panel1.setBackground(Color.white);  panel2.setBackground(Color.white);  panel3.setBackground(Color.white);  Init();  com1.addActionListener(new ClockAction());  com2.addActionListener(new ClockAction());  setContentPane(panel);  setVisible(true);  setResizable(false); }   class ClockAction implements ActionListener {  public void actionPerformed(ActionEvent arg0) {   int c_year, c_month, c_week;   c_year = Integer.parseInt(com1.getSelectedItem().toString()); // 得到當前所選年份    c_month = Integer.parseInt(com2.getSelectedItem().toString()) – 1; // 得到當前月份,並減1,計算機中的月為0-11   c_week = use(c_year, c_month); // 調用函數use,得到星期幾   Resetday(c_week, c_year, c_month); // 調用函數Resetday   } }   public void Init() {  int year, month_num, first_day_num;  String log[] = { “日”, “一”, “二”, “三”, “四”, “五”, “六” };  for (int i = 0; i  7; i++) {   label[i].setText(log[i]);  }     for (int i = 0; i  49; i = i + 7) {   label[i].setForeground(Color.red); // 將星期日的日期設置為紅色  }     for (int i = 6; i  49; i = i + 7) {   label[i].setForeground(Color.green);// 將星期六的日期設置為綠色  }     for (int i = 1; i  10000; i++) {   com1.addItem(“” + i);  }     for (int i = 1; i  13; i++) {   com2.addItem(“” + i);  }     month_num = (int) (now.get(Calendar.MONTH)); // 得到當前時間的月份   year = (int) (now.get(Calendar.YEAR)); // 得到當前時間的年份    com1.setSelectedIndex(year – 1); // 設置下拉列表顯示為當前年  com2.setSelectedIndex(month_num); // 設置下拉列表顯示為當前月  first_day_num = use(year, month_num);  Resetday(first_day_num, year, month_num); }   public int use(int reyear, int remonth) {  int week_num;  now.set(reyear, remonth, 1); // 設置時間為所要查詢的年月的第一天  week_num = (int) (now.get(Calendar.DAY_OF_WEEK));// 得到第一天的星期   return week_num; }    @SuppressWarnings(“deprecation”) public void Resetday(int week_log, int year_log, int month_log) {  int month_day_score; // 存儲月份的天數   int count;  month_day_score = 0;  count = 1;  Date date = new Date(year_log, month_log + 1, 1); // now  Calendar cal = Calendar.getInstance();  cal.setTime(date);  cal.add(Calendar.MONTH, -1); // 前個月  month_day_score = cal.getActualMaximum(Calendar.DAY_OF_MONTH);// 最後一天  for (int i = 7; i  49; i++) { // 初始化標籤   label[i].setText(“”);  }  week_log = week_log + 6; // 將星期數加6,使顯示正確  month_day_score = month_day_score + week_log;  for (int i = week_log; i  month_day_score; i++, count++) {   label[i].setText(count + “”);  } }   public static void main(String[] args) {  JFrame.setDefaultLookAndFeelDecorated(true);  new MainFrame(); }}    

12345678910111213141516171819202122232425262728293031323334353637383940414243    package org.test;import java.awt.Color;import java.util.Calendar;import java.awt.Canvas;import java.awt.Font;import java.awt.Graphics;import java.text.SimpleDateFormat;public class Clock extends Canvas implements Runnable{ private static final long serialVersionUID = 3660124045489727166L; MainFrame mf; Thread t; String time;   public Clock(MainFrame mf){  this.mf=mf;  setSize(280,40);  setBackground(Color.white);  t=new Thread(this);//實例化線程  t.start();   //調用線程    }   public void run(){  while(true){   try{    Thread.sleep(1000);//休眠1秒鐘   }catch(InterruptedException e){    System.out.println(“異常”);   }   this.repaint(100);  } }   public void paint(Graphics g){  Font f=new Font(“宋體”,Font.BOLD,16);  SimpleDateFormat SDF=new SimpleDateFormat(“yyyy’年’MM’月’dd’日’HH:mm:ss”);//格式化時間顯示類型    Calendar now=Calendar.getInstance();  time=SDF.format(now.getTime());        //得到當前日期和時間      g.setFont(f);  g.setColor(Color.orange);  g.drawString(time,45,25); }}

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中輸出日曆

第一句將用戶輸入的數字設為日曆對象的「年」成員變量,第二句和第三句同樣,一個是月份,一個是按照每月第一天開始的日期,第四句用於取得一個默認的日曆對象。

原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hk/n/248978.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
小藍的頭像小藍
上一篇 2024-12-12 13:30
下一篇 2024-12-12 13:30

相關推薦

  • Java JsonPath 效率優化指南

    本篇文章將深入探討Java JsonPath的效率問題,並提供一些優化方案。 一、JsonPath 簡介 JsonPath是一個可用於從JSON數據中獲取信息的庫。它提供了一種DS…

    編程 2025-04-29
  • java client.getacsresponse 編譯報錯解決方法

    java client.getacsresponse 編譯報錯是Java編程過程中常見的錯誤,常見的原因是代碼的語法錯誤、類庫依賴問題和編譯環境的配置問題。下面將從多個方面進行分析…

    編程 2025-04-29
  • Java Bean加載過程

    Java Bean加載過程涉及到類加載器、反射機制和Java虛擬機的執行過程。在本文中,將從這三個方面詳細闡述Java Bean加載的過程。 一、類加載器 類加載器是Java虛擬機…

    編程 2025-04-29
  • Java騰訊雲音視頻對接

    本文旨在從多個方面詳細闡述Java騰訊雲音視頻對接,提供完整的代碼示例。 一、騰訊雲音視頻介紹 騰訊雲音視頻服務(Cloud Tencent Real-Time Communica…

    編程 2025-04-29
  • Java Milvus SearchParam withoutFields用法介紹

    本文將詳細介紹Java Milvus SearchParam withoutFields的相關知識和用法。 一、什麼是Java Milvus SearchParam without…

    編程 2025-04-29
  • Java 8中某一周的周一

    Java 8是Java語言中的一個版本,於2014年3月18日發佈。本文將從多個方面對Java 8中某一周的周一進行詳細的闡述。 一、數組處理 Java 8新特性之一是Stream…

    編程 2025-04-29
  • Java判斷字符串是否存在多個

    本文將從以下幾個方面詳細闡述如何使用Java判斷一個字符串中是否存在多個指定字符: 一、字符串遍歷 字符串是Java編程中非常重要的一種數據類型。要判斷字符串中是否存在多個指定字符…

    編程 2025-04-29
  • VSCode為什麼無法運行Java

    解答:VSCode無法運行Java是因為默認情況下,VSCode並沒有集成Java運行環境,需要手動添加Java運行環境或安裝相關插件才能實現Java代碼的編寫、調試和運行。 一、…

    編程 2025-04-29
  • Java任務下發回滾系統的設計與實現

    本文將介紹一個Java任務下發回滾系統的設計與實現。該系統可以用於執行複雜的任務,包括可回滾的任務,及時恢復任務失敗前的狀態。系統使用Java語言進行開發,可以支持多種類型的任務。…

    編程 2025-04-29
  • Java 8 Group By 會影響排序嗎?

    是的,Java 8中的Group By會對排序產生影響。本文將從多個方面探討Group By對排序的影響。 一、Group By的概述 Group By是SQL中的一種常見操作,它…

    編程 2025-04-29

發表回復

登錄後才能評論