bool FTimespan::Parse( const FString& TimespanString, FTimespan& OutTimespan ) { // @todo gmp: implement stricter FTimespan parsing; this implementation is too forgiving. FString TokenString = TimespanString.Replace(TEXT("."), TEXT(":")); bool Negative = TokenString.StartsWith(TEXT("-")); TokenString.ReplaceInline(TEXT("-"), TEXT(":"), ESearchCase::CaseSensitive); TArray<FString> Tokens; TokenString.ParseIntoArray(Tokens, TEXT(":"), true); if (Tokens.Num() == 4) { Tokens.Insert(TEXT("0"), 0); } if (Tokens.Num() == 5) { OutTimespan.Assign(FCString::Atoi(*Tokens[0]), FCString::Atoi(*Tokens[1]), FCString::Atoi(*Tokens[2]), FCString::Atoi(*Tokens[3]), FCString::Atoi(*Tokens[4])); if (Negative) { OutTimespan.Ticks *= -1; } return true; } return false; }