.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; }