新网创想网站建设,新征程启航
为企业提供网站建设、域名注册、服务器等服务
用java代码实现:
创新互联建站专注于企业营销型网站、网站重做改版、惠东网站定制设计、自适应品牌网站建设、H5高端网站建设、商城网站定制开发、集团公司官网建设、外贸网站制作、高端网站制作、响应式网页设计等建站业务,价格优惠性价比高,为惠东等各大城市提供网站开发制作服务。
public static String longToDate(long lo){
Date date = new Date(lo);
SimpleDateFormat sd = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
return sd.format(date);
}
资料拓展:
长整型(long)是计算机程序语言,是程序设计中数据类型的一种表现方式,一般情况下用long 表示长整型。 long 有符号64位整数,范围是-2^63-2^63 -1 Int64。
在JAVA中获取当前时间的月份并转换成int型可以采用Calendar类提供的方法进行。
具体代码如下:
Calendar calendar=Calendar.getInstance();
//获得当前时间的月份,月份从0开始所以结果要加1
int month=calendar.get(Calendar.MONTH)+1;
将System.out.println("请输入月份");
int month=in.nextInt();
改为:
System.out.println("请输入月份");
int month = in.nextInt();
while(month1 || month12)
{
System.out.println("输入月份有误,请重新输入");
month = in.nextInt();
}
我改造了一下你的代码 :
package com.mikuma.calendar;
import java.util.GregorianCalendar;
import java.util.Scanner;
public class Calendar{
public static void main(String[] args){
int year = 0;
int month = 0;
Scanner scanner = new Scanner(System.in);
System.out.println("请输入您要查询的年份");
year = scanner.nextInt();
System.out.println("请输入您要查询的月份");
while (true){
month = scanner.nextInt();
if (month 0 || month 12){
System.out.println("月份输入有误,请重新输入");
}else{
break;
}
}
printPermanentCalendar(year, month);
}
/**
* 输出万年历
*
* @param year
* @param month
*/
private static void printPermanentCalendar(int year,int month){
int days = 0;
int totaldays = 0;//获取1990年至查询的年份的天数
for (int i = 1900; i year; i++){
totaldays = totaldays + (isLeapYear(i) ? 366 : 365);
}
int beforedays = 0;//到指定月份的天数
for (int i = 1; i = month; i++){
switch (i) {
case 1:
case 3:
case 5:
case 7:
case 8:
case 10:
case 12:
days = 31;
break;
case 4:
case 6:
case 9:
case 11:
days = 30;
break;
case 2:
days = isLeapYear(year) ? 29 : 28;
break;
default:
break;
}
if (i month){
beforedays = beforedays + days;
}
}
totaldays = totaldays + beforedays;//总计天数,以判断周几;
int weekDay = 0;
int temp = (1 + totaldays) % 7;
if (temp == 0){//1990年1月1日星期一,据此日0天星期一,以此类推
weekDay = 0;
}else{
weekDay = temp;
}
System.out.println("星期日\t星期一\t星期二\t星期三\t星期四\t星期五\t星期六");
for (int i = 0; i weekDay; i++){
System.out.print("\t");
}
for (int i = 1; i = days; i++){
System.out.print(i + "\t");
if ((totaldays + i) % 7 == 6){
System.out.print("\n");
}
}
}
private static boolean isLeapYear(int year){
return new GregorianCalendar().isLeapYear(year);
}
}
运行:
对比了下 360日历:
结果正确
我们再测试下 2017 年 2月
对比 360 日历
也是正确
我差点被你的代码绕进去了,打印是当前几月份:cal.get(Calendar.MONTH)+1;\x0d\x0acal.MONTH这个是常量,永远都是2.\x0d\x0a\x0d\x0a然后还有个问题,cal.set(Calendar.DAY_OF_YEAR,11);你这句话是设置某一年的第几天,也就是把月份给定了(当年的第十一天,即永远是一月份)。所以下面设置月份是无效的,\x0d\x0a\x0d\x0a其他问题不大,注意设置月份:\x0d\x0acal.set(Calendar.MONTH,你想要的月份-1);如10月份,cal.set(Calendar.MONTH,9);1月份就是0
import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
public class ForStr {
public static void main(String[] args) throws ParseException {
String src="2014年1月1日10点13分14秒";
DateFormat df=new SimpleDateFormat("y年MM月dd日HH点mm分ss秒");
Date d=new Date();
System.out.println("设置前.获取当前时间:"+df.format(d));
d=df.parse(src);
System.out.println("设置后.获取当前时间:"+df.format(d));
}
}