Я знаю, что это немного слишком поздно, но я хочу указать некоторые другие пункты также. .
Прежде всего, вы не можете имеют string
as;
string latesttime = "2\/11\/2015 8:04:06 PM";
, потому что, так как это regular string literal, вам нужно бежать ваш \
характер, поскольку это escape sequence характер. Вы могли бы хотеть избежать его как "2\\/11\\/2015 8:04:06 PM"
или использовать дословные строковый литерал в @"2\/11\/2015 8:04:06 PM"
Я не думаю, что ваш Convert.ToDateTime()
когда-либо работы с этой строкой, потому что ни один CultureInfo
не имеет формата d\\/MM\\/yyyy h:mm:ss tt
как standard date and time format.
Вместо этого вы можете использовать собственный синтаксический анализ даты и времени с DateTime.TryParseExact
method like;
string s = @"2\/11\/2015 8:04:06 PM";
DateTime dt;
if(DateTime.TryParseExact(s, @"d\\/MM\\/yyyy h:mm:ss tt",
CultureInfo.InvariantCulture,
DateTimeStyles.None,out dt))
{
Console.WriteLine(dt);
}
Поскольку \
является маскирующим в пользовательских даты и времени синтаксического анализа, вам нужно бежать с двойной косой черты, как \\
.
В .NET Framework отсутствует класс SimpleDateFormat
. Я думаю, вы смешиваете его Java SimpleDateFormat
class.
В .NET Framework, обычноDateTime.ToString
method используется при попытке получить строковое представление вашего DateTime
.После синтаксического анализа вы можете сделать это;
dt.ToString("dd/MM/yyyy hh:mm:ss tt", CultureInfo.InvariantCulture);
// Result will be 02/11/2015 08:04:06 PM
dt.ToString("yyyy-MM-dd HH:mm:ss");
// Result will be 2015-11-02 20:04:06
Я использовал InvariantCulture
как IFormatProvider
в первом примере, потому что The "/"
custom format specifier имеет особое значение, как заменить меня с текущей культуры или дата поставки культуры сепараторе. Вот почему это может привести к разным результатам в разных культурах.
Большое спасибо, что помогло решить проблему. –