精华内容
下载资源
问答
  • 十二月最后一天是多少日
    千次阅读
    2021-05-07 09:54:50

    select to_char(trunc(add_months(last_day(sysdate), -1) + 1), 'yyyy-mm-dd') "本月第一天",

    to_char(last_day(sysdate), 'yyyy-mm-dd') "本月最后一天"

    --Oracle trunc()函数的用法

    /**************日期********************/

    1.select trunc(sysdate) from dual  --2011-3-18  今天的日期为2011-3-18

    2.select trunc(sysdate, 'mm')   from   dual  --2011-3-1    返回当月第一天.

    3.select trunc(sysdate,'yy') from dual  --2011-1-1       返回当年第一天

    4.select trunc(sysdate,'dd') from dual  --2011-3-18    返回当前年月日

    5.select trunc(sysdate,'yyyy') from dual  --2011-1-1   返回当年第一天

    6.select trunc(sysdate,'d') from dual  --2011-3-13 (星期天)返回当前星期的第一天

    7.select trunc(sysdate, 'hh') from dual   --2011-3-18 14:00:00   当前时间为14:41

    8.select trunc(sysdate, 'mi') from dual  --2011-3-18 14:41:00   TRUNC()函数没有秒的精确

    /***************数字********************/

    /*

    TRUNC(number,num_digits)

    Number 需要截尾取整的数字。

    Num_digits 用于指定取整精度的数字。Num_digits 的默认值为0。

    TRUNC()函数截取时不进行四舍五入

    */

    9.select trunc(123.458) from dual --123

    10.select trunc(123.458,0) from dual --123

    11.select trunc(123.458,1) from dual --123.4

    12.select trunc(123.458,-1) from dual --120

    13.select trunc(123.458,-4) from dual --0

    14.select trunc(123.458,4) from dual  --123.458

    15.select trunc(123) from dual  --123

    16.select trunc(123,1) from dual --123

    17.select trunc(123,-1) from dual --120

    java获取本月第一天和最后一天

    public class CalendarTest { public static void main(String[] args) { // 获取当前年份.月份.日期 Calendar cale = ...

    mysql日期 获取本月第一天 获取下个月的第一天

    --获取当前日期 select curdate(); --获取当月最后一天 select last_day(curdate()); --获取本月第一天 select DATE_ADD(curdate( ...

    Java 取本月第一天和最后一天

    /** * 获取本月第一天 * @return */ public Date getmindate(){ Calendar calendar = Calendar.getInstance(); cal ...

    MySQL 获取本月第一天、下个月第一天等

    select curdate(); --获取当前日期 select last_day(curdate()); --获取当月最后一天. select DATE_ADD(curdate(),interva ...

    JS 获取本月第一天零点时间戳并转化成yy-mm-dd

    JS 获取本月第一天零点时间戳并转化成yy-mm-dd 格式

    Oracle trunc()函数的用法

    Oracle trunc()函数的用法 /**************日期********************/1.select trunc(sysdate) from dual --2013-0 ...

    Oracle trunc()函数的用法--来着心静禅定ing

    1.TRUNC(for dates) TRUNC函数为指定元素而截去的日期值. 其具体的语法格式如下: TRUNC(date[,fmt]) 其中: date 一个日期值 fmt 日期格式,该日期将由指 ...

    Oracle trunc()函数的用法及四舍五入 round函数

    --Oracle trunc()函数的用法/**************日期********************/1.select trunc(sysdate) from dual  --2011 ...

    [转]Oracle trunc()函数的用法

    更多相关内容
  • /*author OceanHo @ 2015-10-23 10:14:21获取指定时间字符串指定日期的月最后一天日期*/IF OBJECT_ID('get_LastDayDate') IS NOT NULLDROP FUNCTION get_LastDayDateGOCREATE FUNCTION get_LastDayDate(@dateString ...

    /*

    author OceanHo @ 2015-10-23 10:14:21

    获取指定时间字符串指定日期的月最后一天日期

    */

    IF OBJECT_ID('get_LastDayDate') IS NOT NULL

    DROP FUNCTION get_LastDayDate

    GO

    CREATE FUNCTION get_LastDayDate(@dateString NVARCHAR(25))

    RETURNS DATETIME

    AS

    BEGIN

    SELECT @dateString =

    DATEADD(

    /** 将参数3指定的时间加上参数2的天数 **/

    DAY,

    /**

    例如:@dateString = 2015-10-23 23:59:59

    获取 @dateString 的时间 天 部分,因为第三个参数,把@dateString加了一个月,得到的时间就是 2015-11-23 23:59:59

    这个时间的 DAY 部分,也就是 23 就是下个月 1-23号的天数,第三个参数 减去 这个天数,得到的就是前一个月的最后一天

    **/

    -(DATEPART(DAY,@dateString)),

    /* 将@date 加上一个月,得到的就是下个月的今天的具体时间 */

    DATEADD(MONTH,1,@dateString)

    )

    RETURN @dateString

    END

    GO

    -- 测试调用

    SELECT dbo.get_LastDayDate(GETDATE()) AS 本月最后一天日期

    SELECT dbo.get_LastDayDate(N'2015-02-05') AS 二月份最后一天日期

    SQL Server获取索引创建时间&重建时间&重组时间

    之前写过一篇博客"SQL Server中是否可以准确获取最后一次索引重建的时间?",里面主要讲述了三个问题:我们能否找到索引的创建时间?最后一次索引重建(Index Rebuild ...

    SQL SERVER 如何判断是不是年,月最后一天

    , SYSDATETIME())) PRINT '不是'; ELSE PRINT '是'; GO , SYSDATETIME())) PRINT '不是'; ELSE PRINT '是'; GO 1. ...

    sql server 获取当前日期前三十天的日期

    select convert(varchar(10),dateadd(dd,number,dateadd(month,-1,getdate())),120) as dtfrom master..spt ...

    SQL Server获取指定行的数据

    SQL Server获取指定行(如第二行)的数据   --SQL Server获取指定行(如第二行)的数据-- --法一(对象法)-- select * from ( select * , numbe ...

    SQLServer数据库之SQL Server 获取本周,本月,本年等时间内记录

    本文主要向大家介绍了SQLServer数据库之SQL Server 获取本周,本月,本年等时间内记录,通过具体的内容向大家展现,希望对大家学习SQLServer数据库有所帮助. datediff(we ...

    SQL Server 数据恢复到指点时间点(完整恢复)

    SQL Server 数据恢复到指点时间点(完整恢复) 高文龙关注2人评论944人阅读2017-03-20 12:57:12 SQL Server 数据恢复到指点时间点(完整恢复) 说到数据库恢复,其 ...

    SQL SERVER 提供了一些时间函数:

    SQL SERVER 提供了一些时间函数:取当前时间:select getdate()取前一个月的时间:SELECT DATEADD(MONTH,-1,GETDATE()) 月份减一个月取年份:SEL ...

    【转帖】SQL Server 各版本发布时间和开发代号

    SQL Server 各版本发布时间和开发代号 2019年01月23日 11:07:44 努力挣钱娶媳妇的苗同学 阅读数 278 https://blog.csdn.net/weixin_446098 ...

    SQL Server获取下一个编码字符串的实现方案分割和进位

    我在前一种解决方案SQL Server获取下一个编码字符实现和后一种解决方案SQL Server获取下一个编码字符实现继续重构与增强两篇博文中均提供了一种解决编码的方案,考虑良久对比以上两种方 ...

    随机推荐

    iOS Xcode添加ios10.0的路径

    /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/DeviceSupport

    Java读取mat文件

    概述 使用ujmp中的jmatio模块读取.mat文件到java程序中. 其实,ujmp主要是在模块core中实现了矩阵运算,其余模块都是复用了已有的开源库.模块jmatio是复用了已有的JMatIo ...

    IQ推理:红眼睛和蓝眼睛

    题目:  有一个很古老的村子,这个村子的人分两种,红眼睛和蓝眼睛,这两种人并没有什么不同,小孩在没生出来之前,没人知道他是什么颜色的眼睛,这个村子中间有一个广 场,是村民们聚集的地方,现在这个村子只有 ...

    cocos2d_android 瞬间动作

    该文章所写的瞬间动作主要有CCFlipX,CCFlipY,CCHide,CCShow 当中CCFlipX是以Y轴为中心旋转,CCFlipY是以X轴为中心旋转,CCHide将精灵对象隐藏,CCShow将 ...

    Python urllib和urllib2模块学习(一)

    (参考资料:现代魔法学院 http://www.nowamagic.net/academy/detail/1302803) Python标准库中有许多实用的工具类,但是在具体使用时,标准库文档上对使用 ...

    android 混淆配置

    proguard 原理Java代码编译成二进制class 文件,这个class 文件也可以反编译成源代码 ,除了注释外,原来的code 基本都可以看到.为了防止重要code 被泄露,我们往往需要混淆( ...

    没有在xml中引入 相关的配置文件

    错误信息如下   严重: Servlet.service() for servlet AutoReplyServlet threw exception org.apache.ibatis.except ...

    ubuntu安装Eclipse无图标(手动创建软件图标) —— 其他的软件也一样

    //退回根目录 cd / //进入图标存放目录 cd usr/share/applications/ //用文本编辑器打开打开eclipse的图标文件,没有会自动创建 sudo gedit eclip ...

    (一)linux定时任务的设置 crontab 基础实践

    为当前用户创建cron服务 1.  键入 crontab  -e 编辑crontab服务文件 例如 文件内容如下: */2 * * * * /bin/sh /home/admin/jiaoben/bu ...

    C#中类的属性的获取

    /// /// 将多个实体转换成一个DataTable /// ///

    展开全文
  • 是否有一种方法可以使用Python的标准库轻松确定(即一个函数调用)给定月份的最后一天?如果标准库不支持,那么dateutil包是否支持此功能?我是唯一一个认为你在要求Python的最后一天的人吗?:d[20081124从回复移动到...

    是否有一种方法可以使用Python的标准库轻松确定(即一个函数调用)给定月份的最后一天?

    如果标准库不支持,那么dateutil包是否支持此功能?

    我是唯一一个认为你在要求Python的最后一天的人吗?:d[20081124从回复移动到评论---在引入评论系统之前发布了原始回复]

    我之前在查看日历模块的文档时没有注意到这一点,但是一个名为Monthrange的方法提供了以下信息:

    monthrange(year, month)

    Returns weekday of first day of the month and number of days in month, for the specified year and month.

    >>> import calendar

    >>> calendar.monthrange(2002,1)

    (1, 31)

    >>> calendar.monthrange(2008,2)

    (4, 29)

    >>> calendar.monthrange(2100,2)

    (0, 28)

    所以:

    calendar.monthrange(year, month)[1]

    似乎是最简单的方法。

    很明显,monthrange也支持闰年:

    >>> from calendar import monthrange

    >>> monthrange(2012, 2)

    (2, 29)

    我以前的回答仍然有效,但显然是次优的。

    这不是原始问题的正确答案!如果一个月的最后一天是周六/周日呢?

    @马赫迪:没错,第二个数字是"月份天数"=="最后一天",不管是哪一天。

    对于1800年2月,这是错误的一天。我不明白

    @剑1号,我认为用公历的规则来回答,这是正确的。

    如果不想导入calendar模块,简单的两步功能还可以是:

    import datetime

    def last_day_of_month(any_day):

    next_month = any_day.replace(day=28) + datetime.timedelta(days=4)  # this will never fail

    return next_month - datetime.timedelta(days=next_month.day)

    输出:

    >>> for month in range(1, 13):

    ...     print last_day_of_month(datetime.date(2012, month, 1))

    ...

    2012-01-31

    2012-02-29

    2012-03-31

    2012-04-30

    2012-05-31

    2012-06-30

    2012-07-31

    2012-08-31

    2012-09-30

    2012-10-31

    2012-11-30

    2012-12-31

    编辑:请参阅@blair conrad的答案以获得更清洁的解决方案

    >>> import datetime

    >>> datetime.date (2000, 2, 1) - datetime.timedelta (days = 1)

    datetime.date(2000, 1, 31)

    >>>

    事实上,我会称之为清洁剂,除了12月份当today.month + 1 == 13和你得到一个ValueError时它失效的事实。

    你可以通过使用(today.month % 12) + 1来解决这个问题,因为12 % 12给出0

    编辑:看看我的其他答案。它有一个比这个更好的实现,我把它留在这里,以防有人有兴趣看到一个可能"滚动您自己的"计算器。

    @约翰·米利金给出了一个很好的答案,另外还有计算下个月第一天的复杂度。

    以下不是特别优雅,但要想找出任何给定日期所在月份的最后一天,您可以尝试:

    def last_day_of_month(date):

    if date.month == 12:

    return date.replace(day=31)

    return date.replace(month=date.month+1, day=1) - datetime.timedelta(days=1)

    >>> last_day_of_month(datetime.date(2002, 1, 17))

    datetime.date(2002, 1, 31)

    >>> last_day_of_month(datetime.date(2002, 12, 9))

    datetime.date(2002, 12, 31)

    >>> last_day_of_month(datetime.date(2008, 2, 14))

    datetime.date(2008, 2, 29)

    这听起来很傻,但我如何得到第一天的一个月类似这样。

    不是总是1吗?

    是的,但我很困惑,我在找这样的东西:开始日期=日期(datetime.now().year,datetime.now().month,1)

    啊。today = datetime.date.today(); start_date = today.replace(day=1)。您应该避免调用datetime.now两次,以防您在12月31日午夜之前调用它,然后在午夜之后调用它。你将得到2016-01-01而不是2016-12-01或2017-01-01。

    这很容易理解并返回一个日期时间实例,在许多情况下这可能很有用。另一个好处是,如果输入date是datetime.date、datetime.datetime和pandas.Timestamp的实例,它就可以工作。

    使用dateutil.relativedelta非常简单(pip的包python-datetutil)。day=31将始终返回该月的最后一天。

    例子:

    from datetime import datetime

    from dateutil.relativedelta import relativedelta

    date_in_feb = datetime.datetime(2013, 2, 21)

    print datetime.datetime(2013, 2, 21) + relativedelta(day=31)  # End-of-month

    >>> datetime.datetime(2013, 2, 28, 0, 0)

    我个人更喜欢相对论英语(月=1,秒=1),这似乎更明显。

    你错了。datetime(2014, 2, 1) + relativedelta(days=31)给了datetime(2014, 3, 4, 0, 0)…

    你用days=代替day=

    @文斯皮瑟在闰年工作?

    使用relativedelta,您将得到如下的最后一个月日期:

    from dateutil.relativedelta import relativedelta

    last_date_of_month = datetime(mydate.year, mydate.month, 1) + relativedelta(months=1, days=-1)

    这样做的目的是得到一个月的第一天,然后用relativedelta提前一个月,然后再回来一天,这样你就可以得到你想要的月的最后一天。

    另一种解决方案是这样做:

    from datetime import datetime

    def last_day_of_month(year, month):

    """ Work out the last day of the month"""

    last_days = [31, 30, 29, 28, 27]

    for i in last_days:

    try:

    end = datetime(year, month, i)

    except ValueError:

    continue

    else:

    return end.date()

    return None

    使用如下函数:

    >>>

    >>> last_day_of_month(2008, 2)

    datetime.date(2008, 2, 29)

    >>> last_day_of_month(2009, 2)

    datetime.date(2009, 2, 28)

    >>> last_day_of_month(2008, 11)

    datetime.date(2008, 11, 30)

    >>> last_day_of_month(2008, 12)

    datetime.date(2008, 12, 31)

    太复杂了,打破了第三条Python禅的规则。

    次优解,但有效。不值得-3。+ 1;

    from datetime import timedelta

    (any_day.replace(day=1) + timedelta(days=32)).replace(day=1) - timedelta(days=1)

    这就是bug的来源;)1月31日试试。

    @李尔茨:对我有用。当你尝试时会发生什么?

    将任何一天设置为1月31日,这将不起作用。

    它起作用了。任何一天是1月31日,我们用1替换当天,所以1月1日,加上32天,我们得到2月2日,再次替换为1日,我们得到2月1日。减去一天,我们得到1月31日。我不知道是什么问题。你哪天来?

    >>> import datetime

    >>> import calendar

    >>> date  = datetime.datetime.now()

    >>> print date

    2015-03-06 01:25:14.939574

    >>> print date.replace(day = 1)

    2015-03-01 01:25:14.939574

    >>> print date.replace(day = calendar.monthrange(date.year, date.month)[1])

    2015-03-31 01:25:14.939574

    如果您愿意使用外部库,请访问http://crsmithdev.com/arrow/

    然后,您可以通过以下方式获得每月的最后一天:

    import arrow

    arrow.utcnow().ceil('month').date()

    这将返回一个日期对象,然后可以对其进行操作。

    为了得到这个月的最后一个日期,我们这样做:

    from datetime import date, timedelta

    import calendar

    last_day = date.today().replace(day=calendar.monthrange(date.today().year, date.today().month)[1])

    现在,为了解释我们在这里所做的工作,我们将把它分为两部分:

    首先是得到本月使用Monthrange的天数,Blair Conrad已经提到了他的解决方案:

    calendar.monthrange(date.today().year, date.today().month)[1]

    第二个是获取最后一个日期本身,这是我们在替换的帮助下完成的,例如

    >>> date.today()

    datetime.date(2017, 1, 3)

    >>> date.today().replace(day=31)

    datetime.date(2017, 1, 31)

    当我们按照上面提到的方法组合它们时,我们得到了一个动态解。

    尽管此代码可能有助于解决问题,但它不能解释为什么和/或如何回答问题。提供这种额外的背景将显著提高其长期教育价值。请编辑您的答案以添加解释,包括哪些限制和假设适用。

    这似乎是最直接的……如果你想给它两行,你可以得到一个很好的date.replace(day=day),所以每个人都知道发生了什么。

    import datetime

    now = datetime.datetime.now()

    start_month = datetime.datetime(now.year, now.month, 1)

    date_on_next_month = start_month + datetime.timedelta(35)

    start_next_month = datetime.datetime(date_on_next_month.year, date_on_next_month.month, 1)

    last_day_month = start_next_month - datetime.timedelta(1)

    最简单的方法(不必导入日历)是获取下个月的第一天,然后从中减去一天。

    import datetime as dt

    from dateutil.relativedelta import relativedelta

    thisDate = dt.datetime(2017, 11, 17)

    last_day_of_the_month = dt.datetime(thisDate.year, (thisDate + relativedelta(months=1)).month, 1) - dt.timedelta(days=1)

    print last_day_of_the_month

    输出:

    datetime.datetime(2017, 11, 30, 0, 0)

    PS:与import calendar方法相比,此代码运行得更快;请参见以下内容:

    import datetime as dt

    import calendar

    from dateutil.relativedelta import relativedelta

    someDates = [dt.datetime.today() - dt.timedelta(days=x) for x in range(0, 10000)]

    start1 = dt.datetime.now()

    for thisDate in someDates:

    lastDay = dt.datetime(thisDate.year, (thisDate + relativedelta(months=1)).month, 1) - dt.timedelta(days=1)

    print ('Time Spent= ', dt.datetime.now() - start1)

    start2 = dt.datetime.now()

    for thisDate in someDates:

    lastDay = dt.datetime(thisDate.year,

    thisDate.month,

    calendar.monthrange(thisDate.year, thisDate.month)[1])

    print ('Time Spent= ', dt.datetime.now() - start2)

    输出:

    Time Spent=  0:00:00.097814

    Time Spent=  0:00:00.109791

    此代码假定您需要一个月最后一天的日期(即,不只是dd部分,而是整个yyyymmdd日期)

    你为什么不想这样做?

    因为它更快。我已经修改了我上面的答案,将其包括在内。

    @vishal您的概念是正确的,但下面的行不是:``dt.datetime(thisdate.year,(thisdate+relativedelta(months=1)).month,1)-dt.timedelta(days=1)````特别是当月份在年底时。改为尝试``上个月的最后一个日期`=第一个月的第一个日期`+relativedelta(months=1)-relativedelta(days=1)``

    对我来说,这是最简单的方法:

    selected_date = date(some_year, some_month, some_day)

    if selected_date.month == 12: # December

    last_day_selected_month = date(selected_date.year, selected_date.month, 31)

    else:

    last_day_selected_month = date(selected_date.year, selected_date.month + 1, 1) - timedelta(days=1)

    在python 3.7中,有未记录的calendar.monthlen(year, month)函数:

    >>> calendar.monthlen(2002, 1)

    31

    >>> calendar.monthlen(2008, 2)

    29

    >>> calendar.monthlen(2100, 2)

    28

    它相当于记录的calendar.monthrange(year, month)[1]呼叫。

    你可以自己计算结束日期。简单的逻辑是从下个月的开始日期减去一天。:)

    所以写一个自定义方法,

    import datetime

    def end_date_of_a_month(date):

    start_date_of_this_month = date.replace(day=1)

    month = start_date_of_this_month.month

    year = start_date_of_this_month.year

    if month == 12:

    month = 1

    year += 1

    else:

    month += 1

    next_month_start_date = start_date_of_this_month.replace(month=month, year=year)

    this_month_end_date = next_month_start_date - datetime.timedelta(days=1)

    return this_month_end_date

    打电话,

    end_date_of_a_month(datetime.datetime.now().date())

    它将返回这个月的结束日期。将任何日期传递给此函数。返回该月的结束日期。

    这是另一个答案。不需要额外的包裹。

    datetime.date(year + int(month/12), month%12+1, 1)-datetime.timedelta(days=1)

    得到下个月的第一天,从中减去一天。

    我喜欢这边

    import datetime

    import calendar

    date=datetime.datetime.now()

    month_end_date=datetime.datetime(date.year,date.month,1) + datetime.timedelta(days=calendar.monthrange(date.year,date.month)[1] - 1)

    使用熊猫!

    def isMonthEnd(date):

    return date + pd.offsets.MonthEnd(0) == date

    isMonthEnd(datetime(1999, 12, 31))

    True

    isMonthEnd(pd.Timestamp('1999-12-31'))

    True

    isMonthEnd(pd.Timestamp(1965, 1, 10))

    False

    您还可以使用pd.series.dt.is_month_end链接实现

    pandas datetime对象具有特定的方法:now=datetime.datetime.now(); pd_now = pd.to_datetime(now); print(pd_now.days_in_month)。

    这并不能解决主要问题,但是一个很好的办法就是使用calendar.monthcalendar,它返回一个日期矩阵,以星期一为第一列,星期日为最后一列。

    # Some random date.

    some_date = datetime.date(2012, 5, 23)

    # Get last weekday

    last_weekday = np.asarray(calendar.monthcalendar(some_date.year, some_date.month))[:,0:-2].ravel().max()

    print last_weekday

    31

    整个[0:-2]的事情就是把周末专栏删掉,然后扔掉。月份之外的日期用0表示,因此max有效地忽略了它们。

    使用numpy.ravel并不是绝对必要的,但我不喜欢仅仅依赖于一个惯例,即如果不告诉哪个轴需要计算,numpy.ndarray.max会使数组变平。

    你可以用relativedeltahttps://dateutil.readthedocs.io/en/stable/relativedelta.html网站埃多克斯1〔6〕这将给你最后一天。

    如果你想做你自己的小功能,这是一个很好的起点:

    def eomday(year, month):

    """returns the number of days in a given month"""

    days_per_month = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]

    d = days_per_month[month - 1]

    if month == 2 and (year % 4 == 0 and year % 100 != 0 or year % 400 == 0):

    d = 29

    return d

    为此,您必须了解闰年的规则:

    每四年

    除了每100年

    但每400年

    当然,但是系统库已经有了这些数据,如果规则被法令更改,那么更新库就成了别人的问题。

    嗯,可能,但可能性很小,即使-它只会在大约2000年内咬你一口…en.wikipedia.org/wiki/Gregorian_日历准确性

    这些规则在过去的500年里是行不通的,我不相信它们会在未来的数千年里继续存在,

    import calendar

    from time import gmtime, strftime

    calendar.monthrange(int(strftime("%Y", gmtime())), int(strftime("%m", gmtime())))[1]

    输出:

    31

    这将打印当前月份的最后一天。在本例中,是2016年5月15日。因此,您的输出可能会有所不同,但输出的天数将与当前月份的天数相同。如果你想通过每天运行cron作业来检查一个月的最后一天,那就太好了。

    所以:

    import calendar

    from time import gmtime, strftime

    lastDay = calendar.monthrange(int(strftime("%Y", gmtime())), int(strftime("%m", gmtime())))[1]

    today = strftime("%d", gmtime())

    lastDay == today

    输出:

    False

    除非是这个月的最后一天。

    如果在日期范围内传递,则可以使用此选项:

    def last_day_of_month(any_days):

    res = []

    for any_day in any_days:

    nday = any_day.days_in_month -any_day.day

    res.append(any_day + timedelta(days=nday))

    return res

    在下面的代码中,"get-last-day-u of-month(dt)"将给出这个值,日期采用字符串格式,如"yyyy-mm-dd"。

    import datetime

    def DateTime( d ):

    return datetime.datetime.strptime( d, '%Y-%m-%d').date()

    def RelativeDate( start, num_days ):

    d = DateTime( start )

    return str( d + datetime.timedelta( days = num_days ) )

    def get_first_day_of_month( dt ):

    return dt[:-2] + '01'

    def get_last_day_of_month( dt ):

    fd = get_first_day_of_month( dt )

    fd_next_month = get_first_day_of_month( RelativeDate( fd, 31 ) )

    return RelativeDate( fd_next_month, -1 )

    下面是基于解决方案的python lambdas:

    next_month = lambda y, m, d: (y, m + 1, 1) if m + 1 < 13 else ( y+1 , 1, 1)

    month_end  = lambda dte: date( *next_month( *dte.timetuple()[:3] ) ) - timedelta(days=1)

    next_monthlambda查找下个月第一天的元组表示,并滚动到下一年。month_endlambda将日期(dte转换为元组,应用next_month并创建新日期。那么"月底"就是下个月的第一天减去timedelta(days=1)。

    我希望,它非常有用……用这种方法试试……我们必须要进口一些包装

    import time

    from datetime import datetime, date

    from datetime import timedelta

    from dateutil import relativedelta

    start_date = fields.Date(

    string='Start Date',

    required=True,

    )

    end_date = fields.Date(

    string='End Date',

    required=True,

    )

    _defaults = {

    'start_date': lambda *a: time.strftime('%Y-%m-01'),

    'end_date': lambda *a: str(datetime.now() + relativedelta.relativedelta(months=+1, day=1, days=-1))[:10],

    }

    你能解释一下这个答案吗?这段代码甚至不能运行。

    必须导入相对包…然后创建一个lambda函数创建映射值到文件…。如果你想要最后一个日期,只接受最后一个日期。last_date=fields.date(string='last date',required=true,)_defaults='last_date':lambda*a:str(datetime.now()+relativedelta.relativedelta(months=+1,day=1,days=-1))[:10],

    我不知道为什么你发布了一个与开源ERP系统(odoo)相关的答案。此实现也使用了太多的导入。

    我有一个简单的解决方案:

    import datetime

    datetime.date(2012,2, 1).replace(day=1,month=datetime.date(2012,2,1).month+1)-timedelta(days=1)

    datetime.date(2012, 2, 29)

    这在12月份不起作用;您不能使用13作为月份值。

    展开全文
  • 取某最后一天的方法

    千次阅读 2020-12-20 18:14:32
    是,返回某最后一天。这个问题如果,不留神,SQL中有关日期的语句,包含错误的日期,那么就要出错,那么这个怎么解决呢?请参照以下代码。public string MonthMaxDay(long Year,long Month,int Flag){//获取...

    经常我们遇到这样的问题:一是,某月的最后一天是 29,30,还是31 呢?。二是,返回某月的最后一天。这个问题如果,不留神,SQL中有关日期的语句,包含错误的日期,那么就要出错,那么这个怎么解决呢?请参照以下代码。

    public string MonthMaxDay(long Year,long Month,int Flag)

    {

    //获取月、日

    string  Value,Svalue ="";DateTime  Dt;int Day;

    if(Month==0)

    {

    Month=Month+1;

    Year=Year-1;

    }

    if (Flag>0)

    {

    Svalue=Year.ToString("0000")+Month.ToString("00")+"28";

    for(Day=29;Day<=31;Day++)

    {

    try

    {

    Value= Month.ToString("00")+"/" + Day  +"/"+Year.ToString("0000");

    Dt=Convert.ToDateTime(Value);

    Value=Year.ToString("0000")+Month.ToString("00")+Day ;

    Svalue=Value;

    }

    catch(Exception ErrDis)

    {

    ErrDiscroption=ErrDis.ToString();

    goto ErrHd;

    }

    }

    }

    else

    {

    Svalue=Year.ToString("0000")+Month.ToString("00")+"01";

    }

    ErrHd:

    return Svalue;

    }

    ------------------------------------------------------------

    SQL SERVER中

    SELECT DATEADD(D,-1,DATEADD(M,1,CAST(@YEAR AS NVARCHAR(4))+'.'+CAST(@MONTH AS NVARCHAR(2))+'.01'))

    SELECT dateadd(ms,-3,DATEADD(mm, DATEDIFF(m,0,getdate())+1, 0))

    ------------------------------------------------------------

    ///

    /// 获得某月最后一天的数值

    ///  Returns:最后一天的数值

    ///

    /// 需要提取的时间

    /// 最后一天的数值

    public int GetDay(DateTime p_dTime)

    {

    int intResult = 0;

    switch (p_dTime.Month.ToString())

    {

    case "1":

    case "3":

    case "5":

    case "7":

    case "8":

    case "10":

    case "12":

    intResult = 31;

    break;

    case "4":

    case "6":

    case "9":

    case "11":

    intResult = 30;

    break;

    case "2":

    if ((Convert.ToInt16(p_dTime.Year) % 4 == 0) &&

    (Convert.ToInt16(p_dTime.Year) % 100 != 0) ||

    (Convert.ToInt16(p_dTime.Year) % 400 == 0))

    intResult = 29;

    else

    intResult = 28;

    break;

    }

    return intResult;

    }

    -------------------------------------------------------------

    DateTime dt = System.DateTime.Now;//获得当前日期

    dt = dt.AddDays(1 - dt.Day);        //得到当月的第一天日期

    dt = (dt.AddMonths(1)).AddDays(-1);      //得到当月的最后一天日期

    展开全文
  • select trunc(sysdate, 'month') 本月第一天,trunc(last_day(sysdate)) 本月最后一天,trunc(add_months(sysdate, -1), 'month') 上月第一天,trunc(last_day(add_months(sysdate, -1))) 上月最后一天,trunc(add_...
  • Mysql查询每个最后一天

    千次阅读 2021-01-30 22:15:47
    如果数据库表中有涉及到金额的部分,很多时候都需要查询每个月最后一天数据。该语句是用来查询每个月最后一天的。sql语句的写法:select * from table(table写自己的表名称)where date_format(create_time,'%Y-%m-%d...
  • Java:获取当前时间 (本上下)周星期一星期天 获取上月最后一天, 两个时间比较大小 ,获取本月有多少天,获取当前时间的N天//年前 DateUtil
  • 由于经常会再oracle中获取当月的第一天/后一天/上一天/最后一天/上个这一天,所以整理出下面的oracle获取日期大全出来,有什么更好的建议可以留言补充一下。 日期说明 oracle语句(假设现在是2018-11-28 11:11...
  • public static void main(String[] args) { //注意MM 别写成小写的mm了 SimpleDateFormat sm = new SimpleDateFormat("yyyy-MM-dd"); int startyear=2018;...//获取指定年月第一天 Calendar cal...
  • 、各种日期计算方法 # -*- coding: utf-8 -*- import datetime import calendar # 1.初始化个datetime.date类型的日期,多种方式 # init_date = datetime.date(2008, 1, 3) # <class 'datetime.date'> ...
  • 免费文章,只希望能帮助大家。收费不是我的初衷。 我想写过Java,C#,js....... 1.戳进行格式化成自己想要的。例如[2019年0801,2019-08-01,...2.将时间日期格式转化为时间戳,知道日期例如2019年0801,20...
  • JS怎么获取当月最后一天

    千次阅读 2020-10-24 21:36:28
    JS怎么获取当月最后一天,获取3个后,5年后
  • JS获取下个的第一天和最后一天

    千次阅读 2020-02-10 12:15:45
    /*获取下个的第一天*/ nextMonthFirstDay() { var time = new Date(); var year = time.getFullYear(); var month = time.getMonth() + 2; if (month > 12) { month = month -...
  • 今天偶然在vue2/nodejs视频中看到一个计算“本月第一天星期几、本月有多少天、上一个最后一天是几号” 最简便最快捷的方法。 如果自己写,就很容易要判断闰年问题,那就非常复杂了。网上很多关于这些的方法,都...
  • java 获取指定最后一天

    千次阅读 2021-08-03 17:32:37
    今天出现一个很奇怪的问题,使用calendar来处理... * 获取某最后一天 如201712结果为2017-12-30 * @param year * @param month * @return */ public static String getLastday(String year,String month){ .
  • linux中设置每月最后一天执行crontab

    千次阅读 2019-01-14 10:21:08
    使用date命令的if-then语句来检查明天的日期是不是01: 00 12 * * * if [`date +%d -d tomorrow` = 01 ] ; then ;...它会在每天中午12点来检查是不是当月的最后一天,如果是,cron将会运行该命令。 ...
  • Initialization of bean failed; nested exception is ...关于Spring定时任务每月最后一天 corn表达式使用L 报错 可以使用如下解决办法: 首先,每月最后一天可能为(28,29,30,31)这几天只需要在这几天调度程序,在.
  • 查找天数为本年第二天的数据: select * from table where dayofyear(column)='2'; year,month,dayofyear是mysql的函数,分别是取得年,,和当前时间在本年是第几的3个函数 查询当月数据: select *
  • 获取今天的年月 SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); Date date = new Date(); String today = sdf.format(new Date()); System.out.println("今天:"+today); //获取今天的年月,...
  • 修改系统日期: date -s "2020-11-30 22:59:55" 编辑 crontab crontab -e ...说明:修改日期只会执行次,如果你想修改多次日期,执行多次,那么除了第次不用重启 crond 服务,第次以及.
  • 1.查询条件查询当月的数据,数据库是db2,然后网上找了很多,发现很复杂,我们的db2并不支持 LAST_DAY 之类的函数,最后实在是觉得太麻烦,索性用java处理,发现相当简单。 2.在此总结当sql太复杂很难实现或者影响...
  • js获取每个月最后一天的两种方法

    千次阅读 2020-07-03 16:40:32
    直面尴尬的背后,可能就是成长,获取最后一的日期。
  • JAVA获取本月的第一天和最后一天

    千次阅读 2021-02-25 19:54:15
    //获取本月第一天Calendar calendar = Calendar.getInstance();calendar.add(Calendar.MONTH, 0);calendar.set(Calendar.DAY_OF_MONTH, 1);...//获取本月最后一天Calendar calendar = Calendar.getInstance(...
  • 当前月第一天 CurrentMonthFirst(){ var date=new Date(); date.setDate(1); return date; ...当前月最后一天 CurrentMonthLast(){ var date=new Date(); var currentMonth=date.getM...
  • java获取每月最后一天

    万次阅读 多人点赞 2018-02-10 06:37:27
    其实,不纠结于最后一天啦,也可以是上个最后一天,下个的第一天,等等之类的。我发现网上都是写好的一些例子,提供给大家解决那些固定要获取的一个最后一天或者第一天,但是代码注释却又惜字如金,导致...
  • Hive-获取本月的第一天,本月的最后一天,本月的天数
  • crontab每月最后一天执行

    千次阅读 2018-11-12 10:06:22
    crontab每月最后一天执行
  • 个时间,获取这个的...如果我们从1,3,5,7,8,10,12有31,剩下的有30,2比较特殊 平年228,闰年229这个角度来实现的话: function monthDay($date) { $month31 = [1, 3, 5, 7, 8, 10, 12]; list($yea...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 325,453
精华内容 130,181
关键字:

十二月最后一天是多少日