Согласно комментариям, первая проблема, кажется, ожидание, что
return mydate.ToString("=yyyy-MM-dd hh:mm:ss");
будет включать кавычки, когда он преобразует формат DataTime в строку. Но эти кавычки на самом деле являются терминаторами самой строки формата и не являются частью строки формата.
Решение этой проблемы - то, что предложено Джастином
string.Format("=\"{0}\"", mydate.ToString("yyyy-MM-dd hh:mm:ss"))
Хотя я предпочел формат будет использовать строковую интерполяцию
$"\"{mydate.ToString("yyyy-MM-dd hh:mm:ss")}\""
Вторая проблема заключается в том, что text и text2 имеют разные форматы даты и времени, а предоставленное регулярное выражение соответствует только форматам в text2
text: 29-Feb-2020 15:27:58
text2: 2017-03-11 12:25:56
regex: @"\d{4}\-\d{2}\-\d{2}\s\d{2}\:\d{2}\:\d{2}"
Регулярные выражения соответствуют строкам и не знают о данных, которые они соответствуют. Таким образом, наивным регулярным выражением для текста будет что-то вроде (не проверено)
@"\d{2}\-[a-zA-Z]{3}\-\d{4}\s\d{2}\:\d{2}\:\d{2}"
Это предполагает, что месяцы всегда имеют длину 3 символа, и что нет ничего, что выглядит как дата, которая не является датой.
Ваш пример явно делает 2 разных совпадения, поэтому, если вы так поступаете, вы можете создать новое регулярное выражение для каждого из текста и текста2 и выполнить несколько замен. Или вы можете попробовать объединить регулярные выражения, такие как (непроверенные):
@"\d{4}\-\d{2}\-\d{2}\s\d{2}\:\d{2}\:\d{2}|\d{2}\-[a-zA-Z]{3}\-\d{4}\s\d{2}\:\d{2}\:\d{2}"