当前位置:首页 » 编程语言 » 用java写一个日历

用java写一个日历

发布时间: 2023-09-02 23:39:52

㈠ 如何用java里的Calendar类编写万年历

/*
题目:输出任意年份任意月份的日历表(公元后)
思路:
1.已知1年1月1日是星期日,1%7=1对应的是星期日,2%7=2对应的是星期一,以此类推;
2.计算当年以前所有天数+当年当月1号之前所有天数;
a.年份分平年闰年,平年365天,闰年366天;
b.闰年的判断方法year%400==0||(year%100!=0&&year%4==0)若为真,则为闰年否则为平年;
c.定义平年/闰年数组,包含各月天数;
d.遍历数组求和,计算当年当月前总天数;
e.当年以前所有天数+当年当月前总天数+1即为1年1月1日到当年当月1日的总天数;
3.总天数对7取模,根据结果判断当月1号是星期几,输出空白区域;
4.输出当月日历表,逢星期六换行
*/
importjava.util.Scanner;
classFindMonthList{
publicstaticvoidmain(String[]args){
Scannersc=newScanner(System.in);
System.out.println("请输入年份:");
intyear=sc.nextInt();//年份
if(year<1){//判断非法输入年份
System.out.println("输入错误!");
return;
}
System.out.println("请输入月份:");
intmonth=sc.nextInt();//月份
if(month<1||month>12){//判断非法输入月份
System.out.println("输入错误!");
return;
}
//输出表头
System.out.println("-------"+year+"年"+month+"月"+"-------");
System.out.println();
System.out.println("日一二三四五六");

//计算当前年份以前所有天数beforeYearTotalDay;每4年一个闰年,闰年366天,平年365天
intbeforeYearTotalDay=((year-1)/4*366)+(year-1-((year-1)/4))*365;
int[]arrLeapYear={0,31,29,31,30,31,30,31,31,30,31,30,31};//闰年各月天数int数组
int[]arrNormalYear={0,31,28,31,30,31,30,31,31,30,31,30,31};//平年各月天数int数组
intbeforeMonthTotalDay=0;//定义本年当月之前月份的总天数
if(year%400==0||(year%100!=0&&year%4==0)){//判断当前年份是否是闰年
for(inti=0;i<month;i++){//for循环计算当月之前总天数
//计算当前月份之前的所有天数
beforeMonthTotalDay=beforeMonthTotalDay+arrLeapYear[i];
}
//判断当月1日是星期几
inttotalDay=beforeYearTotalDay+beforeMonthTotalDay+1;
intweek=totalDay%7;//已知1年1月1日是星期日,即模7得1对应的是星期日
for(inti=0;i<(week-1+7)%7;i++){//如果写成i<(week-1)会出现i<-1的情况
System.out.print("");//输出开头空白
}
for(inti=1;i<=arrLeapYear[month];i++){//for循环输出各月天数
System.out.print(i+"");
if(i<10){//小于10的数补一个空格,以便打印整齐
System.out.print("");
}
if(i%7==((7-(week-1))%7)||i==arrLeapYear[month]){//每逢星期六/尾数换行
System.out.println();
}
}

}else{//不是闰年就是平年
for(inti=0;i<month;i++){//for循环计算出当月之前月份总天数
beforeMonthTotalDay=beforeMonthTotalDay+arrNormalYear[i];
}
//判断当月1日是星期几
inttotalDay=beforeYearTotalDay+beforeMonthTotalDay+1;
intweek=totalDay%7;//已知1年1月1日是星期日,即模7得1对应的是星期日
for(inti=0;i<(week-1+7)%7;i++){//如果写成i<(week-1)会出现i<-1的情况
System.out.print("");//输出开头空白
}
for(inti=1;i<=arrNormalYear[month];i++){//for循环输出各月天数
System.out.print(i+"");
if(i<10){//小于10的数补一个空格,以便打印整齐
System.out.print("");
}
if(i%7==((7-(week-1))%7)||i==arrNormalYear[month]){//每逢星期六/尾数换行
System.out.println();
}
}
}
}
}

㈡ 怎样用java编写日历

Java编写日历代码:

importjava.util.Scanner;
publicclassWan{publicstaticvoidmain(String[]args)
{
Scannername=newScanner(System.in);
System.out.print("请输入要查询的年份:");
intyear=name.nextInt();
System.out.print("请输入该年的月份");
intmonth=name.nextInt();
}//累加该年至输入的月份天数
//比如输入2009年的3月分
//那就累加2009年的1月至
3月1号的总天数
publicvoidsumDay(intyear,intmonth)
{
intday=0;
intsumDay=0;
for(inti=1;i<=month;i++){switch(i)
{
case1:
case3:
case5:
case7:
case8:
case10:
case12:
day=31;
break;
case2:
if(year%4==0||year%400==0&&year%100!=0)
{day=29;}
else{day=28;}
break;
default:day=30;}
//最后一个月份不要累加因为我们只是要算到该月的一号就可以了
if(i<month){sumDay+=day;}}
//累加2000年到该年的一月一号天数
for(inti=2000;i<year;i++)
{if(i%4==0||i%400==0&&i%100!=0)
{sumDay+=366;}else{sumDay+=365;}}
//求该月一号为星期几
intweek=sumDay%7+1;if(week==7){week=0;}}
publicvoidfomatDate(intweek,intday)
{
intg=0;for(inti=0;i<week;i++)
{System.out.print(" ");}
for(inti=1;i<=day;i++){System.out.print(i+" ");
g=week+i;if(g%7==0){System.out.println();}
}
}
}

㈢ 帮忙用JAVA编写一个简单的日历

这是我几年前写的

importjava.util.ArrayList;
importjava.util.Calendar;
importjava.util.List;

publicclass${

privatestaticint[]DAYS={31,28,31,30,31,30,31,31,30,31,30,31};

publicstaticvoidmain(String[]args){

longl1=System.currentTimeMillis();
Listdata=rili(2015,1,2015,12);
longl2=System.currentTimeMillis();

for(inti=0;i<data.size();i++){
System.out.println(data.get(i));
}
System.out.println((l2-l1)+"MS");
}

privatestaticListrili(intstartYear,intstartMonth,intendYear,intendMonth){

if(startYear>endYear||(startYear==endYear&&startMonth>endMonth)){
returnnull;
}
Listdata=newArrayList();

for(intii=startYear;ii<=endYear;ii++){

intstartM=startMonth-1;
intendM=endMonth-1;

if(startYear<endYear){
if(ii==endYear){
endM=11;
}else{
startM=0;
}
}
for(inti=startM;i<=endM;i++){
data.add("-----------------------"+ii+"年"+(i+1)+"月-----------------------");
data.add("日 一 二 三 四 五 六");

intday=days(ii,i);
StringBufferbuf=newStringBuffer();
intidx=1;
while(idx<=day){
intlen=0;
if(idx==1){
Calendarc=Calendar.getInstance();
c.set(ii,i,idx);
intxingqi=c.get(Calendar.DAY_OF_WEEK);
len=getLen(xingqi);
buf.append(addBlank(len));
}
buf.append(idx++);
for(intk=len+1;k<7;k++){
if(idx>day){
break;
}
buf.append(" "+(idx++));
}
buf.append(" ");
}
data.add(buf);
}
}
returndata;
}

(intlen){
StringBufferbuf=newStringBuffer();
for(intindex=0;index<len;index++){
buf.append(" ");
}
returnbuf;
}

privatestaticintgetLen(intxingqi){
returnxingqi==Calendar.SUNDAY?0:xingqi-1;
}

publicstaticintdays(intyear,intmonth){

if(month!=1){
returnDAYS[month];
}

if((year%4==0&&year%100!=0)||year%400==0){
return29;
}
returnDAYS[month];
}
}

㈣ 用JAVA做日历

import java.util.*;

public class test {
public static void main( String[] args ) {
String[] wd= { "日", "一", "二", "三", "四", "五", "六" };
Scanner s = new Scanner(System.in);
P("请输入要查询的年份:");
int y = s.nextInt();
P("请输入月份:");
int m = s.nextInt();
if(y < 2000 || y > 2010) {
P("不在查询范围之内!");
return;
}

GregorianCalendar g = new GregorianCalendar( y, m-1, 1 );

P( "\n星期\t" );
for ( int j = 0; j < wd.length; ++j )
P( wd[j] + "\t" );
P();
for ( int j = 0; j < g.get( Calendar.DAY_OF_WEEK ); ++j )
P( "\t" );
int thisMonth = g.get( Calendar.MONTH );
for ( int j = 1; j <= 31; ++j ) {
int d = g.get( Calendar.DAY_OF_MONTH );
P( d + "\t" );
if ( g.get( Calendar.DAY_OF_WEEK ) == 7 ) {
P("\n\t");
}
g.add( Calendar.DAY_OF_YEAR, 1 );
if ( g.get( Calendar.MONDAY ) != thisMonth ) {
P("\n\n");
break;
}
}
}

static void P( String s )
{
System.out.print( s );
}
static void P()
{
System.out.println();
}
}

㈤ 怎么用java写日历

以下是两个类,请楼主分别存成两个java文件:
其中
MainFrame.java是显示日历程序,Clock.java是日历计算程序。编译后运行MainFrame这个类即可。

1.MainFrame.java
---
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 = 1L;
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;
int 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.(true);
new MainFrame();
}
}
2.Clock.java
-----
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;

//显示时间的类:Clock

/** *//**
* Clock.java
* Summary 数字时间显示
* Created on
* @author
* remark
*/

import java.awt.Canvas;
import java.awt.Color;
import java.awt.Font;
import java.awt.Graphics;
import java.text.SimpleDateFormat;
import java.util.Calendar;
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);
}
}

热点内容
副编译 发布:2025-02-04 02:05:25 浏览:612
解压按摩师 发布:2025-02-04 01:21:31 浏览:424
linuxssh限制 发布:2025-02-04 01:20:40 浏览:697
脚本式是什么 发布:2025-02-04 01:06:24 浏览:248
手机wps密码怎么取消密码 发布:2025-02-04 00:51:44 浏览:596
算法逻辑表 发布:2025-02-04 00:51:44 浏览:241
零售股票如何配置主线 发布:2025-02-04 00:51:07 浏览:948
预算法施行时间是 发布:2025-02-04 00:50:30 浏览:342
世界ol上传照片 发布:2025-02-04 00:34:13 浏览:62
有初始化的数组编译提示重复定义 发布:2025-02-04 00:33:21 浏览:584