/
日历 1900年1月1日开始
@author yaomingzi
/
public class Calendar {
/
判断某一年是否是闰年
是闰年返回true
@param year
@return
/
public static boolean isBissextile(int year) {
if (year % 400 == 0 || (year % 4 == 0 && year % 100 != 0)) {
return true;
}
return false;
}
/
计算具体某月有多少天
@param month
@param year
@return
/
public static int daysOfmonthInyear(int month, int year) {
int months[] = {31,29,31,30,31,30,31,31,30,31,30,31};
//判断是否是闰年,闰年2月有29 天
if (isBissextile(year)) {
months[1] = 29;
} else {
months[1] = 28;
}
return months[month - 1];
}
/
计算具体某天距离1900年1月1日有多少天数
@param day
@param month
@param year
@return
/
public static int daysFromNovecento(int day, int month, int year) {
//接收天数差值
int daysSum = 0;
//将距离1900年的整年天数相加
for (int i = 1900; i < year; i++) {
//是闰年则为366天不是为365天
daysSum += isBissextile(i) 366 : 365;
}
//计算当年距离1月的整月天数
for (int j = 1; j < month; j++){
daysSum += daysOfmonthInyear(j, year);
}
//加上当月天数
daysSum += day;
return daysSum;
}
/
<p>判断具体某天是星期几
<p>return 1 2 3 4 5 6 0
@param day
@param month
@param year
@return
/
public static int whichWeek(int day, int month, int year){
//190011是星期一,取余得1234560分别代表星期一到星期天
return daysFromNovecento(day, month, year) % 7;
}
/
打印日历 --按日历格式打印某年某月的所有日期
@param month
@param year
/
public static void printMonthOfYear(int month, int year){
String []weeks = {"星期天","星期一","星期二","星期三","星期四","星期五","星期六"};
//打印最上面的星期标记
for (int i = 0; i < weekslength; i++) {
Systemoutprint(weeks[i] + "\t");
}
Systemoutprintln();
//计数器
int count = 0;
//打印当月日期前的水平制表 判断当月1号是星期几就打印几个(0表示星期天)
for (int j = 0; j < whichWeek(1, month, year); j++) {
Systemoutprint("\t");
count++;
}
//循环次数为当月天数
for (int i = 1; i <= daysOfmonthInyear(month, year); i++) {
Systemoutprint(i + "\t");
count++;
//每打印7个打印换行
if (count % 7 == 0) {
Systemoutprintln();
}
}
//当所有日期打印完毕若最后一个打印后没有换行打印换行美化显示
if (count % 7 !=0) {
Systemoutprintln();
}
Systemoutprintln();
}
/
打印日历--按日历格式打印某一年的所有日期
@param year
/
public static void printYear(int year){
Systemoutprintln("\t\t\t" + year + "年");
//循环12个月 每次调用打印月份方法
for (int i = 1; i <= 12; i++) {
Systemoutprintln("\t\t\t" + i + "月");
printMonthOfYear(i, year);
}
}
//main方法 --- 测试
public static void main(String []args) {
Systemoutprintln(daysFromNovecento(30, 10, 2015));
}
}
import javatextSimpleDateFormat;
import javautilCalendar;
import javautilDate;
import javautilLocale;
public class Test {
public static void main(String[] args) {
Calendar calendar = CalendargetInstance(LocaleCHINA);
calendarsetTime(new Date());// 设置当前日期
int day = calendargetMinimum(CalendarDAY_OF_MONTH);// 取得当前月的最小日期(天)
calendarset(CalendarDAY_OF_MONTH, day);// 设置天
String sDate = new SimpleDateFormat("yyyy-MM-dd")format(calendargetTime());// 格式化成字符串
Systemoutprintln(sDate);// 打印
}
}
import javautil;
public class riqi {
public static void main(String[] args) {
int totaldays = 0;
int dayofmonth = 0;
int twomonth;
Scanner input = new Scanner(Systemin);
Systemoutprint("请输入年份:");
int year = inputnextInt(); // 输入年份
Systemoutprint("请输入月份:");
int month = inputnextInt(); // 输入月份
for (int i = 1900; i < year; i++) {
if (((i % 4 == 0) && (i % 100 != 0)) || (i % 400 == 0)) {
totaldays = totaldays + 366;
} else {
totaldays = totaldays + 365;
}
}
for (int nomonth = 1; nomonth <= month; nomonth++) {
if (nomonth == 1 || nomonth == 3 || nomonth == 5 || nomonth == 7
|| nomonth == 8 || nomonth == 10 || nomonth == 12) {
dayofmonth = 31;
} else if (nomonth == 2) {
if ((year % 4 == 0) && (year % 100 != 0) || (year % 400 == 0)) {
dayofmonth = 29;
} else {
dayofmonth = 28;
}
} else {
dayofmonth = 30;
}
if (nomonth < month) {
totaldays = totaldays + dayofmonth;
}
// Systemoutprintln(totaldays);
}
Systemoutprintln("星期一\t星期二\t星期三\t星期四\t星期五\t星期六\t星期天");
int temp = (totaldays % 7);
// Systemoutprint(temp);
for (int p = 0; p < temp; p++) {
Systemoutprint("\t");
}
for (int w = 1; w <= dayofmonth; w++) {
Systemoutprint(w + "\t");
if ((totaldays + w) % 7 == 0) {
Systemoutprintln();
}
}
}
}
Calendar JAVA 这个JAVA日历用处很多,好好看看这个很有好处我们java用的复杂的时间 *** 作,一般都用这个
Java 本身提供了对 "Gregorian Calendar" 规则的实现。我们从 CalendargetInstance() 中所获得的实例就是一个 "GreogrianCalendar" 对象(与您通过 new GregorianCalendar() 获得的结果一致)。
下面的代码可以证明这一点:
import javaio;
import javautil;
public class WhatIsCalendar
{
public static void main(String[] args) {
Calendar calendar = CalendargetInstance();
if (calendar instanceof GregorianCalendar)
Systemoutprintln("It is an instance of GregorianCalendar"t;
}
}
Calendar 在 Java 中是一个抽象类(Abstract Class),GregorianCalendar 是它的一个具体实现。
我们也可以自己的 Calendar 实现类,然后将它作为 Calendar 对象返回(面向对象的特性)。在 IBM alphaWorks 上,IBM 的开发人员实现了多种日历(>
import javautilCalendar;
import javautilScanner;
public class CalendarX {
static Calendar c=CalendargetInstance();
static String[] wd={"SAT","SUN","MON","TUE","WED","THU","FRI",};
public static void main(String[] args) {
Scanner sn = new Scanner(Systemin);
Systemoutprint("Input year:");
int year=snnextInt();
Systemoutprint("Input month:");
int month=snnextInt();
printCalendar(year,month);
}
static void printCalendar(int y,int m){
cset(CalendarYEAR, y);
cset(CalendarMONTH, m-1);
cset(CalendarDATE, 1);
int fd=cget(CalendarDAY_OF_WEEK);
int md=cgetActualMaximum(CalendarDATE);
for(int i=0; i<7; i++)Systemoutprintf("%5s",wd[i]);Systemoutprintln();
for(int i=0; i<fd; i++)Systemoutprintf("%5s","");
for(int i=0; i<md; i++){
Systemoutprintf("%5s",i+1);
if(++fd%7==0)Systemoutprintln();
}
}
}
这个比较简单,4行代码就行
Calendar calendar = CalendargetInstance();
calendarset(CalendarDAY_OF_MONTH, 1);
SimpleDateFormat format = new SimpleDateFormat("E");
Systemoutprintln("本月第一天是:" + formatformat(calendargetTime()));
如果你要得到一个数字的话就是:
calendarget(CalendarDAY_OF_WEEK),当然,这个结果是以星期天为第一天算出来的,如果要换成星期一开始,减1就行了
希望能帮助你。
public static int getDayOfMonth(){
Calendar aCalendar = CalendargetInstance(LocaleCHINA);
int day=aCalendargetActualMaximum(CalendarDATE);
return day;
}
这是获取的一个月的最大的天数。。。。
以上就是关于用java编写日历,输入年月可以显示当前月份信息全部的内容,包括:用java编写日历,输入年月可以显示当前月份信息、在java中如何通过一个月份,获得该月份的第一天的日期、输入某年某月 打印出当月日历,要求日期和星期对应,用JAVA语言等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)