首先获取当前日期 然后赋值为当前年月的第一天  然后加一个月 减去一天 就是当月最后一天 多用于筛选数据时的条件或者区间

  我们先随便拉个页面  简单点就好

GeneXus笔记本—获取当月的最后一天-LMLPHP

放入两个textblock 然后点击Event(这是书写代码的地方) 在初始事件中写如下代码

Event Start
//先用变量保存时间参数
&Date = ServerDate() //获取的是当前的年月日
&DateTime = ServerNow() //获取的是当时的年月日 时分秒 //赋值 当前日期
Textblock2.Caption = "当前日期:"+&DateTime.ToString() //赋值 当前月份最后一天
&Date.Set(&Date.Year(),&Date.Month(),)
&Date = &Date.AddMonths()
&Date = &Date.AddDays(-)
Textblock3.Caption = "当前月份的最后一天:"+&Date.ToString().Trim() Endevent

这里GeneXus对于时间的获取是有函数的 所以直接变量接收就好了 然后就是别忘了 右键这个变量并添加到Variables(这是管理页面上所有变量的地方) 还有就是 对于时间格式的显示变量请保持习惯将该变量的属性设置为长格式 如下

GeneXus笔记本—获取当月的最后一天-LMLPHP

应为如果不设置的话 时间就会变成段格式的  变成19/5/20 这种  当然如果你只是当作中间变量传值 则不需要考虑  显示在页面上的话 就需要多多注意

然后 按照代码所示 先取值赋值 加一个月减一个天 即可 如图

GeneXus笔记本—获取当月的最后一天-LMLPHP

这里请大家注意 我之前遇到的一个小问题 当时我在写这段代码的时候 发现逻辑是通的 但是获取到的日期一直都是4月的最后一个月  然后检查代码同时通过日志调试之后发现原因如下

//将当前日期的值手动赋予新值
&Date.Set(&Date.Year(),&Date.Month(),)
Log.Info(&Date.ToString)
//这里我因为疏忽将本该写成&Date = &Date.AddMonths(1) 写成了&Date.AddMonths(1) 我当时认为此方式是可以和上方的代码一样可以直接改变这个&Date值的
&Date.AddMonths()
Log.Info(&Date.ToString)
//奇怪的是这里我没漏 2333
&Date = &Date.AddDays(-)
Log.Info(&Date.ToString)

结果日志调试结果如下

GeneXus笔记本—获取当月的最后一天-LMLPHP

后买发现加一个月那行代码问题后我又尝试将减一天的那句代码也写成&Date.AddDays(-1) 结果却发现IDE提示了错误消息

GeneXus笔记本—获取当月的最后一天-LMLPHP

蛤?为啥 我忘记写加月份的那个赋值操作没提醒 这个减天数的又提醒了 虽然暂时不知道原因 但是先放在这里 供大家参考和注意 之后晓得了情况会记下的(如果我还记得的话)

哦 对了 顺便说一下 关于GeneXus的很常用的一个找错误方式 那就是日志

我们只需要如下图打开对应的属性 然后找到该项目下的文件即可找到你当前的操作数据日志

GeneXus笔记本—获取当月的最后一天-LMLPHP

GeneXus笔记本—获取当月的最后一天-LMLPHP

然后点开项目路径 进到Web文件夹GeneXus笔记本—获取当月的最后一天-LMLPHP

搜索就Client.log即可

5月30日补充

不好意思 突然发现一个函数 可以直接获取当前日期的最后一天

&Date.EndOfMonth().ToString()

大家可以试试

05-26 23:12