using System.Collections;
using System.Collections.Generic;
using System.Runtime.Serialization.Formatters;
using System.ComponentModel.DataAnnotations;
using System.Globalization;
using Newtonsoft.Json.Linq;
using Newtonsoft.Json.Converters;
using Newtonsoft.Json.Serialization;
public static void Test()
var testStrings = new [] { "6/12/2018 12:00:03 a. m.", "6/12/2018 12:00:03 p. m." };
foreach (var date in testStrings)
Console.WriteLine("\nInput date string: {0}", date);
var formatInfo = (DateTimeFormatInfo)CultureInfo.InvariantCulture.DateTimeFormat.Clone();
formatInfo.AMDesignator = "a. m.";
formatInfo.PMDesignator = "p. m.";
var x = DateTime.ParseExact(date, "d/MM/yyyy h:mm:ss tt", formatInfo);
Console.WriteLine(x.ToUniversalTime().ToString("yyyy-MM-ddTHH\\:mm\\:ss.fffffffzzz"));
Console.WriteLine(x.ToString("d/MM/yyyy h:mm:ss tt", formatInfo));
var x2 = Convert.ToDateTime(date);
Console.WriteLine("Result of Convert.ToDateTime(date):");
Console.WriteLine(x2.ToUniversalTime().ToString("yyyy-MM-ddTHH\\:mm\\:ss.fffffffzzz"));
Console.WriteLine("Unable to parse this string with Convert.ToDateTime(date), error = " + ex.Message);
foreach (var info in CultureInfo.GetCultures(CultureTypes.AllCultures))
if (info.DateTimeFormat.AMDesignator == "a. m." && info.DateTimeFormat.PMDesignator == "p. m.")
Console.WriteLine("Culture {0} ({1}) has the required AM and PM designators.", info.DisplayName, info.Name);
foreach (var date in testStrings)
var formatInfo = CultureInfo.GetCultureInfo("es-MX");
var x = DateTime.ParseExact(date, "d/MM/yyyy h:mm:ss tt", formatInfo);
Console.WriteLine("\nInput date string: {0} parsed using {1}:", date, formatInfo);
Console.WriteLine(x.ToUniversalTime().ToString("yyyy-MM-ddTHH\\:mm\\:ss.fffffffzzz"));
Console.WriteLine(x.ToString("d/MM/yyyy h:mm:ss tt", formatInfo));
public static void Main()
Console.WriteLine("Environment version: " + Environment.Version);
Console.WriteLine("Json.NET version: " + typeof(JsonSerializer).Assembly.FullName);
Console.WriteLine("Failed with unhandled exception: ");