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/bashfor month in {0112};do
for day in {0131};do
mdkir -p filename_${month}${day}
done
done
上面就是最简单的,但是没考虑月份的天数,30天和31天还有2月的特殊性。然后我们可以用date这个命令来动态产生时间
#/bin/bashyear="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编程:我要一年的最后一天,或者要一年的天数,年份是个参数等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)