求高手 EXCEL公式如何取当月已过天数(要自动识别月份)

求高手 EXCEL公式如何取当月已过天数(要自动识别月份),第1张

a1:

2009-1-6

b1:

2009-2-6

c1=datedif(a16,b16,"d")+1

datedif()函数

计算两个日期之间的天数、月数或年数。你放心microsoft

excel

按顺序的系列数保存日期,这样就可以对其进行计算。已经考虑过大小月的问题了(可不是农历大小月啊)。因为求得是之间的天数,所以要加上1,就是末日。

当然你也可以用大一点的日期减去小的日期,再加1

为了正确使用公式,你输入的日期,最好是规范的

按照你的要求,如何得到一个月有多少天,这里并没有说是什么年份,所以默认当年(不同年份的月份天数可能不一样,例如闰年的二月)

因此问题变为

输入条件:指定某一个月

输出结果:当年这个月份的天数

思路:在Java8里新的时间API里,月份已经被抽象成了枚举Month,所以可以把输入条件定义为枚举类型的Month,然后获取当前时间X,把时间X的月份修改为输入条件的月份,此时时间X变为X1,根据本身提供的方法lengthOfMonth就可以直接得到X1所在当月的天数了

代码:(请将JDK升到8

public static void main(String[] args) {

    Systemoutprintln(countDaysInMonth(MonthMAY));

}

public static int countDaysInMonth(Month month){

    // 获取当前时间

    LocalDate now = LocalDatenow();

    Systemoutprintln(now);

    // 把当前时间的月份修改为输入的月份

    LocalDate thisMonthDate = nowwithMonth(monthgetValue());

    Systemoutprintln(thisMonthDate);

    return thisMonthDatelengthOfMonth();

}

也可以连着写,更美观点

public static int countDaysInMonth(Month month){

    return LocalDatenow()

                    withMonth(monthgetValue())

                    lengthOfMonth();

}

非常直观且易懂好用,在Java8里with就代表着修改意思,withMonth那就是修改月份,所以整个代码读下来就变成

获取当前时间A

修改A的月份为输入条件得到时间B

计算B所在月的天数

在日常的开发过程中,经常会涉及指标月化的问题,就会用到一个‘当月自然天数’,tableau没有函数直接获取,但也是能实现,所以针对当月自然天数的获取做了以下处理:

数据为月粒度数据,思路大致是:利用年月构造当月1号的日期和下月1号的日期,获取日期差:

--获得当月天数

select

day(dateadd(mm,1,getdate())-day(getdate()))

as

本月天数

;

select

getdate()

as

当前日期;

select

day(getdate())

as

目前第几天;

select

getdate()-day(getdate())

as

上个月最后一天;

--

减去了当前的天数

select

dateadd(mm,1,getdate())-day(getdate())

as

加上一个月;

--

也就是这个月的最后一天

select

day(dateadd(mm,1,getdate())-day(getdate()))

as

获得当月天数;

可以用networkdays函数来计算

语法结构:NETWORKDAYS(start_date, end_date, [holidays])

参数如下:

Start_date    必需。 一个代表开始日期的日期。

End_date    必需。 一个代表终止日期的日期。

Holidays    可选。不在工作日历中的一个或多个日期所构成的可选区域,例如:省/市/自治区和国家/地区的法定假日以及其他非法定假日。该列表可以是包含日期的单元格区域,或是表示日期的序列号的数组常量。

例如,计算2018年7月份的工作日

借助其他单元格有数据的情况下,公式:=NETWORKDAYS(B1,B2,D2:D4)

不借助其他数据,直接用一条公式得出结果:=NETWORKDAYS(EOMONTH(TODAY(),-1)+1,EOMONTH(TODAY(),0),D2:D4)

方法1:在A1单元格输入前面的日期,比如“2004-10-10”,在A2单元格输入后面的日期,如“2005-6-7”。接着单击A3单元格,输入公式“=DATEDIF(A1,A2,"d")”。然后按下回车键,那么立刻就会得到两者的天数差“240”。

提示:公式中的A1和A2分别代表前后两个日期,顺序是不可以颠倒的。此外,DATEDIF函数是Excel中一个隐藏函数,在函数向导中看不到它,但这并不影响我们的使用。

方法2:任意选择一个单元格,输入公式“="2010-11-27"-"2010-5-12"”,然后按下回车键,我们可以立即计算出结果。

1、必须有日期为支撑,闰年和非闰年的月份天数可能不一样,若求A1(A1为日期)月份的天数,可用公式:=day(date(year(a1),month(a1)+1,0))

2、day是日期函数用来求日期格式数值的日期数值的返回以序列号表示的某日期的天数,用整数 1 到 31 表示。

比如:

=day("2011/5/4") 得出的值就是4

以下表达式可获取下个月的第一天日期:

DATE_FORMAT(ADDDATE(CURDATE(),INTERVAL '1' MONTH),'%Y-%m-01')

这个日期再减去1天就是月底日期。

下面举例获取今天(2017-01-24)到月底的天数:

select DATEDIFF(

DATE_FORMAT(ADDDATE(CURDATE(),INTERVAL '1' MONTH),'%Y-%m-01'),CURDATE())-1;

以上就是关于求高手 EXCEL公式如何取当月已过天数(要自动识别月份)全部的内容,包括:求高手 EXCEL公式如何取当月已过天数(要自动识别月份)、Java里,如何得到一个月有多少天、tableau获取当月自然天数等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

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

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

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

发表评论

登录后才能评论

评论列表(0条)

保存