diff --git a/src/Microsoft.ML.Data/Data/Conversion.cs b/src/Microsoft.ML.Data/Data/Conversion.cs index 1f04ba1fc9..ae30c6e19f 100644 --- a/src/Microsoft.ML.Data/Data/Conversion.cs +++ b/src/Microsoft.ML.Data/Data/Conversion.cs @@ -231,6 +231,7 @@ private Conversions() AddStd(Convert); AddStd(Convert); AddStd(Convert); + AddStd(Convert); AddAux(Convert); AddStd(Convert); @@ -1673,5 +1674,9 @@ public void Convert(in TX src, ref SB dst) public void Convert(in BL src, ref R8 dst) => dst = System.Convert.ToDouble(src); public void Convert(in BL src, ref BL dst) => dst = src; #endregion FromBL + + #region ToDT + public void Convert(in DT src, ref DT dst) => dst = src; + #endregion ToDT } } \ No newline at end of file diff --git a/test/Microsoft.ML.Core.Tests/UnitTests/DataTypes.cs b/test/Microsoft.ML.Core.Tests/UnitTests/DataTypes.cs index 914fb2db38..6c93616cbf 100644 --- a/test/Microsoft.ML.Core.Tests/UnitTests/DataTypes.cs +++ b/test/Microsoft.ML.Core.Tests/UnitTests/DataTypes.cs @@ -228,6 +228,26 @@ public void TXToLong() Assert.Equal(default, dst); } + [Fact] + public void DTToDT() + { + bool identity; + var dtToDT = Conversions.Instance.GetStandardConversion( + DateTimeDataViewType.Instance, DateTimeDataViewType.Instance, out identity); + + Assert.NotNull(dtToDT); + + DateTime dt = new DateTime(2017, 03, 05); + DateTime result = default; + + dtToDT(in dt, ref result); + + Assert.True(identity); + Assert.Equal(dt, result); + Assert.Equal(3, dt.Month); + Assert.Equal(dt.Kind, result.Kind); + } + private static ValueMapper GetMapper(DataViewType dstType) { Assert.True(typeof(TDst) == dstType.RawType);