java,急!!利用Math类的random()函数产生一个0—3000的年份,1-12的月份,输出天数。

java,急!!利用Math类的random()函数产生一个0—3000的年份,1-12的月份,输出天数。,第1张

int year=(int)(Mathrandom()3000);得到的就是0-3000的年份

int month=(int)(Mathrandom()11)+1;就是1-12月

输出天数是什么天数,不指定日,没法准确计算天数

import javautil;

import javatext;

public class CalendarDemo

{

public static void main(String[] args)

{

Calendar c1 = CalendargetInstance();

DateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");

SimpleDateFormat format2 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");

String time1 = "2011-03-11 11:39:04";

String time2 = "2022-02-03 22:33:44";

try

{

c1setTime(formatparse(time1));

}

catch (Exception e)

{

Systemoutprintln(e);

}

Systemoutprintln("nian" + c1get(c1YEAR) + "yue" + (c1get(c1MONTH) + 1) + "ri" + c1get(c1DAY_OF_MONTH)); //获取年月日

c1add(c1DAY_OF_MONTH,5); //增加5天

c1add(c1HOUR_OF_DAY,-4); //减少4个小时

c1roll(c1YEAR,2); //增加2年

c1roll(c1MONTH,-2);//减少2个月

Systemoutprintln("time1 = " + format2format(c1getTime()));

c1set(c1MONTH,6);//增加7天

Systemoutprintln("time1 = " + format2format(c1getTime()));

try

{

c1setTime(formatparse(time2));//将日历时间设为指定时间

Systemoutprintln("time1 = " + format2format(c1getTime()));

}

catch (Exception e)

{

Systemerrprintln(e);

}

}

}

多看看文档就好

如果是以当前时间为起点,得到自然年,可以这样:

Calendar cal = CalendargetInstance() ;

caladd(CalendarDAY_OF_YEAR, 365);

int myYears = calgetTime()getYear()- (new Date())getYear();

import javautil;

public class Test {

public static void main(String[] args) {

Scanner input = new Scanner(Systemin);

Systemoutprintln("请输入年份");

int year = inputnextInt();

Systemoutprintln("请输入月份");

int month = inputnextInt();

if(month==2){

if (((year % 100 == 0) && (year % 400 == 0))

|| ((year % 100 != 0) && (year % 4 == 0))) {

Systemoutprintln(month+"月份天数是29天");

return;

}else {

Systemoutprintln(month+"月份天数是28天");

return;

}

}else if(month%2==0 ) {

Systemoutprintln(month+"月份是30天");

}else if(month%2!=0) {

Systemoutprintln(month+"月份是31天");

}

}

}

首先把获取的字符串日期转换成Date类型(从前台页面获取的是字符串类型的日期 a,b):

Date a1 = new SimpleDateFormat("yyyy-MM-dd")parse(a);

Date b1 = new SimpleDateFormat("yyyy-MM-dd")parse(b);

//获取相减后天数

long day = (a1getTime()-b1getTime())/(2460601000);

希望可以帮到你。

楼上正解,不过楼主问出这个问题可能也是初学者,我就提供一下用简单语法的代码

public static void main(String[] args) {

Scanner scan=new Scanner(Systemin);

Systemoutprintln("请输入年份");

int year= scannextInt();//得到需求年份

Systemoutprintln("请输入月份");

int month=scannextInt();//得到需求月份

switch(month){

case 1:

case 3:

case 5:

case 7:

case 8:

case 10:

case 12:

Systemoutprintln(year+"年"+month+"月的天数为:"+31);

break;

case 4:

case 6:

case 9:

case 11:

Systemoutprintln(year+"年"+month+"月的天数为:"+30);

case 2:

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

Systemoutprintln(year+"年2月的天数为:"+29);

}else{

Systemoutprintln(year+"年2月的天数为:"+28);

}

}

}

/

  2015年12月9日下午9:01:18

  

  @author hp TODO 计算两个日期之间的天数

 

 /

public class MyCalender {

    /

      判断该年是不是闰年

      

      @param year

                 年份

      @return 是则返回true,否则返回false

     /

    public boolean isLeapYear(int year) {

        return year % 4 == 0 && (year % 100 != 0 || year % 400 == 0);

    }

    /

      返回当月的天数

      

      @param year

                 年份

      @param month

                 月份

      @return

     /

    public int getDayOfMonth(int year, int month) {

        int[] day = { 0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 };

        if (isLeapYear(year) && 2 == month) {// 闰年且为2月时

            return day[month] + 1;

        }

        return day[month];

    }

    /

      计算两个日期之间的天数(结束日期必须大于开始日期)

      

      @param startYear

                 开始年份

      @param startMonth

                 开始月份

      @param startDay

                 开始日

      @param endYear

                 结束年份

      @param endMonth

                 结束月份

      @param endDay

                 结束日

      @return

     /

    public long countDayBetweenTowDate(int startYear, int startMonth, int startDay, int endYear, int endMonth,

            int endDay) {

        long sum = 0;

        int startDate = 0;

        int endDate = 0;

        for (int year = startYear; year < endYear; year++) {

            sum += 365;

            if (isLeapYear(year)) {

                sum++;

            }

        }

        for (int month = 0; month < startMonth; month++) {

            startDate += getDayOfMonth(startYear, month);

        }

        startDate += startDay;

        for (int month = 0; month < endMonth; month++) {

            endDate += getDayOfMonth(endYear, month);

        }

        endDate += endDay;

        sum = sum + endDate - startDate;

        return sum;

    }

    public static void main(String[] args) {

        MyCalender calender = new MyCalender();

        int startYear = 1990;

        int startMonth = 1;

        int startDay = 1;

        int endYear = 1990;

        int endMonth = 12;

        int endDay = 31;

        // 这里您可以使用Scanner 进行控制台输进

        Systemoutprintln(calendercountDayBetweenTowDate(startYear, startMonth, startDay, endYear, endMonth, endDay));

    }

}

在Java开发物流或是其他功能的时候会用到两个日期相差多天的数据,所以整理了一下备用。

调用方式:

代码如下 复制代码

long date1 = getDateTime("20121201");//可改成自己的日期类型,但以“20121212”这种格式

long date2 = getDateTime("20121212");

int day = dateInterval(date1, date2);

Systemoutprintln(day);

具体实现方法调用:

代码如下 复制代码

/

计算出两个日期之间相差的天数

建议date1 大于 date2 这样计算的值为正数

@param date1 日期1

@param date2 日期2

@return date1 - date2

/

public static int dateInterval(long date1, long date2) {

if(date2 > date1){

date2 = date2 + date1;

date1 = date2 - date1;

date2 = date2 - date1;

}

// Canlendar 该类是一个抽象类

// 提供了丰富的日历字段

// 本程序中使用到了

// CalendarYEAR 日期中的年份

// CalendarDAY_OF_YEAR 当前年中的天数

// getActualMaximum(CalendarDAY_OF_YEAR) 返回今年是 365 天还是366天

Calendar calendar1 = CalendargetInstance(); // 获得一个日历

calendar1setTimeInMillis(date1); // 用给定的 long 值设置此 Calendar 的当前时间值。

Calendar calendar2 = CalendargetInstance();

calendar2setTimeInMillis(date2);

// 先判断是否同年

int y1 = calendar1get(CalendarYEAR);

int y2 = calendar2get(CalendarYEAR);

int d1 = calendar1get(CalendarDAY_OF_YEAR);

int d2 = calendar2get(CalendarDAY_OF_YEAR);

int maxDays = 0;

int day = 0;

if(y1 - y2 > 0){

day = numerical(maxDays, d1, d2, y1, y2, calendar2);

}else{

day = d1 - d2;

}

return day;

}

/

日期间隔计算

计算公式(示例):

20121201- 20121212

取出20121201这一年过了多少天 d1 = 天数 取出20121212这一年过了多少天 d2 = 天数

如果2012年这一年有366天就要让间隔的天数+1,因为2月份有29日。

@param maxDays 用于记录一年中有365天还是366天

@param d1 表示在这年中过了多少天

@param d2 表示在这年中过了多少天

@param y1 当前为2012年

@param y2 当前为2012年

@param calendar 根据日历对象来获取一年中有多少天

@return 计算后日期间隔的天数

/

public static int numerical(int maxDays, int d1, int d2, int y1, int y2, Calendar calendar){

int day = d1 - d2;

int betweenYears = y1 - y2;

List<Integer> d366 = new ArrayList<Integer>();

if(calendargetActualMaximum(CalendarDAY_OF_YEAR) == 366){

Systemoutprintln(calendargetActualMaximum(CalendarDAY_OF_YEAR));

day += 1;

}

for (int i = 0; i < betweenYears; i++) {

// 当年 + 1 设置下一年中有多少天

calendarset(CalendarYEAR, (calendarget(CalendarYEAR)) + 1);

maxDays = calendargetActualMaximum(CalendarDAY_OF_YEAR);

// 第一个 366 天不用 + 1 将所有366记录,先不进行加入然后再少加一个

if(maxDays != 366){

day += maxDays;

}else{

d366add(maxDays);

}

// 如果最后一个 maxDays 等于366 day - 1

if(i == betweenYears-1 && betweenYears > 1 && maxDays == 366){

day -= 1;

}

}

for(int i = 0; i < d366size(); i++){

// 一个或一个以上的366天

if(d366size() >= 1){

day += d366get(i);

}

}

return day;

}

/

将日期字符串装换成日期

@param strDate 日期支持年月日 示例:yyyyMMdd

@return 1970年1月1日器日期的毫秒数

/

public static long getDateTime(String strDate) {

return getDateByFormat(strDate, "yyyyMMdd")getTime();

}

/

@param strDate 日期字符串

@param format 日期格式

@return Date

/

public static Date getDateByFormat(String strDate, String format) {

SimpleDateFormat sdf = new SimpleDateFormat(format);

try{

return (sdfparse(strDate));

}catch (Exception e){

return null;

}

}

例2

代码如下 复制代码

import javatextParseException;

import javatextSimpleDateFormat;

import javautilCalendar;

import javautilDate;

public class test16 {

/

@param args

@throws ParseException

/

public static void main(String[] args) throws ParseException {

// TODO Auto-generated method stub

SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");

Date d1=sdfparse("2012-09-08 10:10:10");

Date d2=sdfparse("2012-09-15 00:00:00");

Systemoutprintln(daysBetween(d1,d2));

Systemoutprintln(daysBetween("2012-09-08 10:10:10","2012-09-15 00:00:00"));

}

/

计算两个日期之间相差的天数

@param smdate 较小的时间

@param bdate 较大的时间

@return 相差天数

@throws ParseException

/

public static int daysBetween(Date smdate,Date bdate) throws ParseException

{

SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd");

smdate=sdfparse(sdfformat(smdate));

bdate=sdfparse(sdfformat(bdate));

Calendar cal = CalendargetInstance();

calsetTime(smdate);

long time1 = calgetTimeInMillis();

calsetTime(bdate);

long time2 = calgetTimeInMillis();

long between_days=(time2-time1)/(1000360024);

return IntegerparseInt(StringvalueOf(between_days));

}

/

字符串的日期格式的计算

/

public static int daysBetween(String smdate,String bdate) throws ParseException{

SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd");

Calendar cal = CalendargetInstance();

calsetTime(sdfparse(smdate));

long time1 = calgetTimeInMillis();

calsetTime(sdfparse(bdate));

long time2 = calgetTimeInMillis();

long between_days=(time2-time1)/(1000360024);

return IntegerparseInt(StringvalueOf(between_days));

}

}

例3

代码如下 复制代码

//取得剩余天数

SimpleDateFormat df=new SimpleDateFormat("yyyymmdd");

Date d0=new javautilDate();

Date d1=dfparse(end_date);

long time0=d0getTime();

long time1=d1getTime();

Systemoutprintln((time1-time0)/(1000606024));

这样算两个时间相差的天数比较好

代码如下 复制代码

/

计算两个日期之间相差的天数

@param date1

@param date2

@return

/

public static int diffdates(Date date1, Date date2) {

int result = 0;

ElapsedTime et = new ElapsedTime();

GregorianCalendar gc1 = new GregorianCalendar();

GregorianCalendar gc2 = new GregorianCalendar();

gc1setTime(date1);

gc2setTime(date2);

result = etgetDays(gc1, gc2);

return result;

}

然后ElapseTime中的方法是:

代码如下 复制代码

public int getDays(GregorianCalendar g1, GregorianCalendar g2) {

int elapsed = 0;

GregorianCalendar gc1, gc2;

if (g2after(g1)) {

gc2 = (GregorianCalendar) g2clone();

gc1 = (GregorianCalendar) g1clone();

} else {

gc2 = (GregorianCalendar) g1clone();

gc1 = (GregorianCalendar) g2clone();

}

gc1clear(CalendarMILLISECOND);

gc1clear(CalendarSECOND);

gc1clear(CalendarMINUTE);

gc1clear(CalendarHOUR_OF_DAY);

gc2clear(CalendarMILLISECOND);

gc2clear(CalendarSECOND);

gc2clear(CalendarMINUTE);

gc2clear(CalendarHOUR_OF_DAY);

while (gc1before(gc2)) {

gc1add(CalendarDATE, 1);

elapsed++;

}

return elapsed;

}

其实使用joda最简单

代码如下 复制代码

public boolean isRentalOverdue(DateTime datetimeRented) {

Period rentalPeriod = Perioddays(2);

return datetimeRentedplus(rentalPeriod)isBeforeNow()

}

以上就是关于java,急!!利用Math类的random()函数产生一个0—3000的年份,1-12的月份,输出天数。全部的内容,包括:java,急!!利用Math类的random()函数产生一个0—3000的年份,1-12的月份,输出天数。、java中,利用Calendar对象怎么得到天数,和月数,(天数和月数单独拿出来的 不像:yyyy-MM-dd)、java中,现在知道总天数 days, 如何利用 Calendar 类,得到这些天数是多少年years等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/9288457.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-26
下一篇 2023-04-26

发表评论

登录后才能评论

评论列表(0条)

保存