UE5获取前N天的日期

1、需求:获取前N天的日期来筛选数据

1.1、使用场景

如果是有联网接口的话可以直接使用网络请求来筛选数据,如果是内网或者无网环境那么该如何获取指定日期来进行筛选呢,本文介绍了如何获取前N天的日期。

2、实现

2.1、创建函数库

本文实现的方法是使用继承蓝图函数库创建的C++类来实现的,所以函数是静态的,如果需要在类当中调用可以去掉static。如下图创建蓝图函数库

2.2、头文件

注意创建的c++类的名称,我这里命名为MyBlueprintFunctionLibrary

这里是.h头文件的函数定义,传入一个整型Num,就是前Num天


//.h

UFUNCTION(BlueprintCallable, BlueprintPure, DisplayName = "获取前N天的年月日")
static void GetLastWeek(int32 Num, int32& Year, int32& Month,int32& Day);

2.3、函数实现

先上代码块,注意void后面的MyBlueprintFunctionLibrary就是刚刚创建的类的名称,如果你刚刚使用的不是和我一样的就修改为自己设置的类名称

void MyBlueprintFunctionLibrary::GetLastWeek(int32 Num,int32& Year, int32& Month, int32& Day)
{
    //本年
	Year = UKismetMathLibrary::Now().GetYear();
    //本月
	Month = UKismetMathLibrary::Now().GetMonth();
    //本日
	Day = UKismetMathLibrary::Now().GetDay();
    //如果本日小于前Num天
	if (Day - Num <= 0)
	{
        //本月是不是一月
		if (Month - 1 == 0)
		{
            //是,则是今年-1=去年
			Year = Year-1;
            //月等于12月
			Month = 12;
            //日就是去年十二月份的天数减去 今日减前Num天的绝对值
			Day = UKismetMathLibrary::DaysInMonth(Year - 1, 12) - UKismetMathLibrary::Abs(Day - Num);
		}
		else
		{
            //不是就正常减
			Month = Month - 1;
            //天数正常获取
			Day = UKismetMathLibrary::DaysInMonth(Year, Month - 1) - UKismetMathLibrary::Abs(Day - Num);
		}
	}
	else
	{
        //本月天数足够减,直接把本日天数减去前Num天
		Day = Day - Num;
	}
}

以上就是代码和注释了,那我们来试验一下结果吧~

3、测试

3.1、前N天还在本月内

先测试一下在本月内的日期,刚好现在是一月,今天是2024/1/25,我们获取前7天应该是2024/1/18

按下1打印一下,发现没有问题~

3.2、前N天不在本月内

那再来测试一下大于本月天数,前25天,那刚好就是2024/12/31

按下1打印测试一下~

没有问题,符合要求

4、结语

好了,本次分享结束了,如果对您有起到帮助,麻烦点个赞吧!

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值