java编程 判断月份,判断天数

java编程 判断月份,判断天数,第1张

import javautil;

/

   

    这里没有对输入非数字的数进行处理!

   /

public class Shell {

public static void main(String[] args) {

Scanner sc = new Scanner(Systemin);

int y = 0;

int n = 0;

//输入年份,用于判断闰年

Systemoutprintln("请输入年份:");

y = scnextInt();

Systemoutprintln("请输入月份:");

n = scnextInt();

switch (n) {

case 1:

case 3:

case 5:

case 7:

case 8:

case 10:

case 12:

Systemoutprintln(n + "月份有:31天");

break;

//对于2月份需要判断是否为闰年

case 2:

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

Systemoutprintln(n + "月份有:29天");

break;

} else {

Systemoutprintln(n + "月份有:28天");

break;

}

case 4:

case 6:

case 9:

case 11:

Systemoutprintln(n + "月份有:30天");

break;

default:

Systemoutprintln("请输入正确的年份和月份");

break;

}

}

}

date -d" -11 month " +%Y%m%d

获取到当天的日期

然后再判断月份,如果是1,3,5,7,8,10,12

那么把日期替换成31

如果是4,6,9,11

那么把日期替换成30

如果是2

还得去判断是否为闰年

是闰年就29

不是就28

一年的最后一天一定是 12月31日。

下面的脚本计算一年的最后一天是这年的第几天,所以就算出了这年总共多少天了。所以天数可以用

days=`date -d $year-12-31 "+%j"` 的方法来计算。

你的问题主要是用单引号把$temp2给括起来了,在单引号内,是无法用$var的方法来对var取值的,在双引号内是可以的。

#!/bin/bash

year=$1

echo Year $year has `date -d $year-12-31 "+%j"` days

自己man以下丫

-u, --utc, --universal

显示或设置全球时间(格林威治时间)

%b 当前区域的月份的简写 (JanDec)

%h 同 %b

%H 小时(按 24 小时制显示,用两位表示) (0023)

%I 小时(按 12 小时制显示,用两位表示) (0112)

看说明多清楚

取月份yue

if

(( yue <4 )); then 是第一季度; elif

(( yue <7 )); then 是第二季度; elif

……; fi

最简单的就是用两个for循环

#!/bin/bash

for month in {0112};do

    for day in {0131};do

        mdkir -p filename_${month}${day}

    done

done

上面就是最简单的,但是没考虑月份的天数,30天和31天还有2月的特殊性。然后我们可以用date这个命令来动态产生时间

#/bin/bash

year="2017"  #定义所要的时间是哪年

for day in {0366};do   #这里按每年最多366天来计算

    DATE=`date -d "${year}-01-01 +$day day" +%m%d`   #从0101开始算

    mkdir filename_${DATE}

done

##1控制执行时间间隔:使用sleep:

echo hello

sleep 10s #等10秒

echo hello

sleep 10m #等10分钟

echo hello

sleep 10h #等10hour

echo hello

sleep 10d #等10days

##2控制执行时间点:使用crontab

Step 1:

使用命令crontab -e编辑一个定时执行的任务或在/var/spool/cron/crontabs目录下新建一个与自己用户名相同的任务

即:

#每隔一分钟执行一次后台程序tmpmail

/home/milch/tmpmail

顺便提一下crontab中的命令格式:

第一个 表示分钟 (0-59),

第二个 表示小时 (0-23),

第三个 表示月份中的某一天 (1-31),

第四个 表示一年中的某一月 (1-12),

第五个 表示一周中的星期几 (0-6 with 0=Sunday)

实例说明

# crontab -l

# DO NOT EDIT THIS FILE - edit the master and reinstall

# (/tmp/crontab3672 installed on Thu Jan 1 15:55:18 2004)

# (Cron version -- $Id: crontabc,v 213 1994/01/17 03:20:37 vixie Exp $)

0 0-23/6 /usr/bin/webalizer

30 3 /root/fbin/bak-web

#

先前曾提到,crontab 的格式分成六个部分,前五个是时间参数。在上例中你会发现除了数字与英文名称,有使用到符号"",这个符号代表每一单位的意思,譬如 30 3 既代表 30分 3点 每日 每月 星期的每天。

时间的指定,可以是单一的数字,或几个数字用逗号来连接。看下例

30 3,12 /root/fbin/bak-web

其中的第二项为 3,12,这代表 3 以及 12 小时的意思。再来看下例

30 /6 /root/fbin/bak-web

我把第二项改成 /6 这代表每 6 小时,也相当於 6,12,18,24 的作用。此外还有一个区段的做法

30 8-18/2 /root/fbin/bak-web

我把第二项改成 8-18/2 这代表在 8 小时到 18 小时之间每 2 小时,也相当於 8,10,12,14,16,18 的作用。

自己判断终究比较麻烦,还有润年什么的,2月还不一定是28天。建议从date命令获取某月的天数:

代码修改如下:

#!/bin/bash

#$1是4位数年份,$2是两位数月份

#这里用了printf,你可以把它的结果传递给mkdir建立目录

i=0

while  [[ `date -d "+$i days $1-$2-01" +%m` -eq $2 ]]

do

    let i++

    printf "$1年$2月%02g日\n" $i

done

date那句是返回给定的某年、某月的第一天   加上   i  天的日期中  月份的数值。如果还是原来的月份就打印,如果不是输入的月份(说明是下一个月了)就退出。

以上就是关于java编程 判断月份,判断天数全部的内容,包括:java编程 判断月份,判断天数、shell中如何获取以当天日期开始的前11个月最后一天的日期、Linux下的shell编程:我要一年的最后一天,或者要一年的天数,年份是个参数等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

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

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

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

发表评论

登录后才能评论

评论列表(0条)

保存