Fixes U4-3894 Date picker with time resets to "måndag januari 1, 0001" on Republish entire site
This commit is contained in:
@@ -292,7 +292,20 @@ namespace Umbraco.Core
|
||||
else if (destinationType == typeof(DateTime))
|
||||
{
|
||||
DateTime value;
|
||||
return DateTime.TryParse(input, out value) ? Attempt<object>.Succeed(value) : Attempt<object>.Fail();
|
||||
if (DateTime.TryParse(input, out value))
|
||||
{
|
||||
switch (value.Kind)
|
||||
{
|
||||
case DateTimeKind.Unspecified:
|
||||
case DateTimeKind.Utc:
|
||||
return Attempt<object>.Succeed(value);
|
||||
case DateTimeKind.Local:
|
||||
return Attempt<object>.Succeed(value.ToUniversalTime());
|
||||
default:
|
||||
throw new ArgumentOutOfRangeException();
|
||||
}
|
||||
}
|
||||
return Attempt<object>.Fail();
|
||||
}
|
||||
else if (destinationType == typeof(DateTimeOffset))
|
||||
{
|
||||
@@ -526,7 +539,7 @@ namespace Umbraco.Core
|
||||
if (type == typeof(bool)) return XmlConvert.ToString((bool)value);
|
||||
if (type == typeof(byte)) return XmlConvert.ToString((byte)value);
|
||||
if (type == typeof(char)) return XmlConvert.ToString((char)value);
|
||||
if (type == typeof(DateTime)) return XmlConvert.ToString((DateTime)value, XmlDateTimeSerializationMode.RoundtripKind);
|
||||
if (type == typeof(DateTime)) return XmlConvert.ToString((DateTime)value, XmlDateTimeSerializationMode.Unspecified);
|
||||
if (type == typeof(DateTimeOffset)) return XmlConvert.ToString((DateTimeOffset)value);
|
||||
if (type == typeof(decimal)) return XmlConvert.ToString((decimal)value);
|
||||
if (type == typeof(double)) return XmlConvert.ToString((double)value);
|
||||
|
||||
@@ -104,30 +104,24 @@ namespace Umbraco.Tests
|
||||
}
|
||||
}
|
||||
|
||||
[Test]
|
||||
public virtual void CanConvertStringToDateTime()
|
||||
[TestCase("2012-11-10", true)]
|
||||
[TestCase("2012/11/10", true)]
|
||||
[TestCase("10/11/2012", true)]// assuming your culture uses DD/MM/YYYY
|
||||
[TestCase("11/10/2012", false)]// assuming your culture uses DD/MM/YYYY
|
||||
[TestCase("Sat 10, Nov 2012", true)]
|
||||
[TestCase("Saturday 10, Nov 2012", true)]
|
||||
[TestCase("Sat 10, November 2012", true)]
|
||||
[TestCase("Saturday 10, November 2012", true)]
|
||||
[TestCase("2012-11-10 13:14:15", true)]
|
||||
[TestCase("2012-11-10T13:14:15Z", true)]
|
||||
public virtual void CanConvertStringToDateTime(string date, bool outcome)
|
||||
{
|
||||
var dateTime = new DateTime(2012, 11, 10, 13, 14, 15);
|
||||
var testCases = new Dictionary<string, bool>
|
||||
{
|
||||
{"2012-11-10", true},
|
||||
{"2012/11/10", true},
|
||||
{"10/11/2012", true}, // assuming your culture uses DD/MM/YYYY
|
||||
{"11/10/2012", false}, // assuming your culture uses DD/MM/YYYY
|
||||
{"Sat 10, Nov 2012", true},
|
||||
{"Saturday 10, Nov 2012", true},
|
||||
{"Sat 10, November 2012", true},
|
||||
{"Saturday 10, November 2012", true},
|
||||
{"2012-11-10 13:14:15", true}
|
||||
};
|
||||
|
||||
foreach (var testCase in testCases)
|
||||
{
|
||||
var result = testCase.Key.TryConvertTo<DateTime>();
|
||||
var result = date.TryConvertTo<DateTime>();
|
||||
|
||||
Assert.IsTrue(result.Success, testCase.Key);
|
||||
Assert.AreEqual(DateTime.Equals(dateTime.Date, result.Result.Date), testCase.Value, testCase.Key);
|
||||
}
|
||||
Assert.IsTrue(result.Success, date);
|
||||
Assert.AreEqual(DateTime.Equals(dateTime.Date, result.Result.Date), outcome, date);
|
||||
}
|
||||
|
||||
[Test]
|
||||
|
||||
Reference in New Issue
Block a user