其中
MainFramejava是显示日历程序,Clockjava是日历计算程序。编译后运行MainFrame这个类即可。
1MainFramejava
---
import javaawtBorderLayout;
import javaawtColor;
import javaawtGridLayout;
import javaawtToolkit;
import javaawteventActionEvent;
import javaawteventActionListener;
import javasqlDate;
import javautilCalendar;
import javaxswingJComboBox;
import javaxswingJFrame;
import javaxswingJLabel;
import javaxswingJPanel;
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 = CalendargetInstance(); // 实例化Calendar
MainFrame() {
super("万年历");
setSize(300, 350);
x_size = (int) (ToolkitgetDefaultToolkit()getScreenSize()getWidth());
y_size = (int) (ToolkitgetDefaultToolkit()getScreenSize()getHeight());
setLocation((x_size - 300) / 2, (y_size - 350) / 2);
setDefaultCloseOperation(JFrameEXIT_ON_CLOSE);
panel1add(y_label);
panel1add(com1);
panel1add(m_label);
panel1add(com2);
for (int i = 0; i < 49; i++) {
label[i] = new JLabel("", JLabelCENTER);// 将显示的字符设置为居中
panel2add(label[i]);
}
panel3add(new Clock(this));
paneladd(panel1, BorderLayoutNORTH);
paneladd(panel2, BorderLayoutCENTER);
paneladd(panel3, BorderLayoutSOUTH);
panelsetBackground(Colorwhite);
panel1setBackground(Colorwhite);
panel2setBackground(Colorwhite);
panel3setBackground(Colorwhite);
Init();
com1addActionListener(new ClockAction());
com2addActionListener(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 = IntegerparseInt(com1getSelectedItem()toString()); // 得到当前所选年份
c_month = IntegerparseInt(com2getSelectedItem()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(Colorred); // 将星期日的日期设置为红色
}
for (int i = 6; i < 49; i = i + 7) {
label[i]setForeground(Colorgreen);// 将星期六的日期设置为绿色
}
for (int i = 1; i < 10000; i++) {
com1addItem("" + i);
}
for (int i = 1; i < 13; i++) {
com2addItem("" + i);
}
month_num = (int) (nowget(CalendarMONTH)); // 得到当前时间的月份
year = (int) (nowget(CalendarYEAR)); // 得到当前时间的年份
com1setSelectedIndex(year - 1); // 设置下拉列表显示为当前年
com2setSelectedIndex(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;
nowset(reyear, remonth, 1); // 设置时间为所要查询的年月的第一天
week_num = (int) (nowget(CalendarDAY_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 = CalendargetInstance();
calsetTime(date);
caladd(CalendarMONTH, -1); // 前个月
month_day_score = calgetActualMaximum(CalendarDAY_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) {
JFramesetDefaultLookAndFeelDecorated(true);
new MainFrame();
}
}
2Clockjava
-----
import javaawtBorderLayout;
import javaawtColor;
import javaawtGridLayout;
import javaawtToolkit;
import javaawteventActionEvent;
import javaawteventActionListener;
import javasqlDate;
import javautilCalendar;
import javaxswingJComboBox;
import javaxswingJFrame;
import javaxswingJLabel;
import javaxswingJPanel;
//显示时间的类:Clock
/ //
Clockjava
Summary 数字时间显示
Created on
@author
remark
/
import javaawtCanvas;
import javaawtColor;
import javaawtFont;
import javaawtGraphics;
import javatextSimpleDateFormat;
import javautilCalendar;
class Clock extends Canvas implements Runnable{
/ //
/
private static final long serialVersionUID = 3660124045489727166L;
MainFrame mf;
Thread t;
String time;
public Clock(MainFrame mf){
thismf=mf;
setSize(280,40);
setBackground(Colorwhite);
t=new Thread(this); //实例化线程
tstart(); //调用线程
}
public void run(){
while(true){
try{
Threadsleep(1000); //休眠1秒钟
}catch(InterruptedException e){
Systemoutprintln("异常");
}
thisrepaint(100);
}
}
public void paint(Graphics g){
Font f=new Font("宋体",FontBOLD,16);
SimpleDateFormat SDF=new SimpleDateFormat("yyyy'年'MM'月'dd'日'HH:mm:ss");//格式化时间显示类型
Calendar now=CalendargetInstance();
time=SDFformat(nowgetTime()); //得到当前日期和时间
gsetFont(f);
gsetColor(Colororange);
gdrawString(time,45,25);
}
}
请看下面的例子
public static void main(String[] args) {SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
Calendar c =CalendargetInstance();
Systemoutprintln(sdfformat(cgetTime()));
cset(CalendarYEAR, 2014);
cset(CalendarMONTH,9);//从0开始,0表是1月,1表示2月依次类推
cset(CalendarDAY_OF_MONTH, 21);
cset(CalendarHOUR_OF_DAY, 23);
cset(CalendarMINUTE, 59);
cset(CalendarSECOND, 0);
Systemoutprintln(sdfformat(cgetTime()));
}
执行结果:
2015-10-29 15:31:43
2014-10-21 23:59:00
如有不明白的可继续提问。
取得当前日期所在周的第一天
/
public Date getFirstDayOfWeek(Date date)
{
Calendar c = CalendargetInstance();
csetFirstDayOfWeek(CalendarMONDAY);
csetTime(date);
cset(CalendarDAY_OF_WEEK, cgetFirstDayOfWeek()); // 星期一
return cgetTime ();
}
/
取得当前日期所在周的最后一天
/
public Date getLastDayOfWeek(Date date)
{
Calendar c = CalendargetInstance();
csetFirstDayOfWeek(CalendarMONDAY);
csetTime(date);
cset(CalendarDAY_OF_WEEK, cgetFirstDayOfWeek() + 6); //星期天
return cgetTime();
}alendarsetTime(date)可以解决;
将字符串转化为 Date 类型,然后再设为 Calendar 类型。
// 创建 Calendar 对象 Calendar calendar = CalendargetInstance(); // 默认是当前日期 try { // 对 calendar 设置时间的方法 // 设置传入的时间格式 SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-M-d H:m:s"); // 指定一个日期 Date date = dateFormatparse("2013-6-1 13:24:16"); // 对 calendar 设置为 date 所定的日期 calendarsetTime(date); // 按特定格式显示刚设置的时间 str = (new SimpleDateFormat("yyyy-MM-dd HH:mm:ss:SSS"))format(calendargetTime()); Systemoutprintln(str); } catch (ParseException e) { eprintStackTrace(); }
Calendar类计算两个日期的差,需要转化成毫秒计算,然后再转化成天
例:
import javautilCalendar;public class Test{
public static void main(String[] args){
Calendar a = CalendargetInstance(),
b = CalendargetInstance();
aset(2015, CalendarMARCH, 31);
bset(2015, CalendarAPRIL, 1);
long diffDays = (bgetTimeInMillis() - agetTimeInMillis()) / (1000 60 60 24);
Systemoutprintln(diffDays);
}
}Calendar calendar = CalendargetInstance();
calendarset(CalendarDAY_OF_YEAR, 15);
calendarset(CalendarMONTH, 1);
calendarset(CalendarYEAR, 2012);
Date date = calendargetTime();
不知道这是不是你想要的//日历存放列表
List<String> list = new ArrayList<String>();
//日期格式
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
//月初
Calendar begin=CalendargetInstance();
beginset(CalendarYEAR, year);
beginset(CalendarMONTH, month-1);
beginset(CalendarDAY_OF_MONTH,1);
Systemoutprintln(formatformat(begingetTime()));
//月末
Calendar end = CalendargetInstance();
endsetTime(begingetTime());
endadd(CalendarMONTH, 1);
endadd(CalendarDAY_OF_MONTH,-1);
Systemoutprintln(formatformat(endgetTime()));
//创建日历
while(endcompareTo(begin)>=0){
listadd(formatformat(begingetTime()));
beginadd(CalendarDAY_OF_MONTH, 1);
}
//显示日历
for(String date : list){
Systemoutprintln(date);
}
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)