.h /* 根据日期获得星期几 C为年份前两位,Year为年份后两位,Month为月份,Day为号数, 如果Day/Month任意一项为0的时候,那么则根据当前系统时间计算 */ UFUNCTION(BlueprintCallable,BlueprintPure, Category = "DayOfWeek") void GetDayOfWeek(int32 Day, int32 Month, int32 Year, int32 C, int32& W); .cpp void URealisWidget::GetDayOfWeek(int32 Day, int32 Month, int32 Year, int32 C, int32& W) { /*如果Day/Month任意一项为0的时候,那么则根据当前系统时间计算*/ if (Day == 0 || Month == 0) { FDateTime Time = FDateTime::Now(); FString CAndYear = FString::FromInt(Time.GetYear()); FString Century = UKismetStringLibrary::GetSubstring(CAndYear, 0, 2); FString Y = UKismetStringLibrary::GetSubstring(CAndYear, 2, 4); C = FCString::Atoi(*Century); Year = FCString::Atoi(*Y); Month = Time.GetMonth(); Day = Time.GetDay(); } /* 1、2月份需看作上一年的13、14月来计算 */ if (Month == 1 || Month == 2) { Month += 12; if (Year == 0) { Year = 99; C -= 1; } else { Year -= 1; } } W = (FMath::CeilToInt(C / 4) - 2 * C + Year + FMath::CeilToInt(Year / 4) + FMath::CeilToInt(26 * (Month + 1) / 10) + Day - 1) % 7; }