I have developed a Python script using ArcPy with one of the output variable being of Date type. In the actual Python code, the variable is a Python datetime object which has both the date and time sections.
A snippet of Python script "ExtractNetCDFToRaster.py" is as below.
<SPAN class="">import</SPAN><SPAN class=""> sys</SPAN><SPAN class="">,</SPAN><SPAN class=""> os</SPAN><SPAN class="">from</SPAN><SPAN class=""> os</SPAN><SPAN class="">.</SPAN><SPAN class="">path </SPAN><SPAN class="">import</SPAN><SPAN class=""> basename</SPAN><SPAN class="">import</SPAN><SPAN class=""> arcpy</SPAN><SPAN class="">import</SPAN><SPAN class=""> datetime</SPAN><SPAN class="">from</SPAN><SPAN class=""> dateutil </SPAN><SPAN class="">import</SPAN><SPAN class=""> tz </SPAN><SPAN class=""># Convert UTC datetime to local datetime</SPAN><SPAN class=""></SPAN><SPAN class="">def</SPAN><SPAN class=""> convertToLocalDT</SPAN><SPAN class="">(</SPAN><SPAN class="">string</SPAN><SPAN class="">):</SPAN><SPAN class=""> from_zone </SPAN><SPAN class="">=</SPAN><SPAN class=""> tz</SPAN><SPAN class="">.</SPAN><SPAN class="">tzutc</SPAN><SPAN class="">()</SPAN><SPAN class=""> to_zone </SPAN><SPAN class="">=</SPAN><SPAN class=""> tz</SPAN><SPAN class="">.</SPAN><SPAN class="">tzlocal</SPAN><SPAN class="">()</SPAN><SPAN class=""> </SPAN><SPAN class=""># 20/11/2017 1:00:00 PM</SPAN><SPAN class=""> dtUTC </SPAN><SPAN class="">=</SPAN><SPAN class=""> datetime</SPAN><SPAN class="">.</SPAN><SPAN class="">datetime</SPAN><SPAN class="">.</SPAN><SPAN class="">strptime</SPAN><SPAN class="">(</SPAN><SPAN class="">string</SPAN><SPAN class="">,</SPAN><SPAN class=""> </SPAN><SPAN class="">"%d/%m/%Y %I:%M:%S %p"</SPAN><SPAN class="">)</SPAN><SPAN class=""> dtLocal </SPAN><SPAN class="">=</SPAN><SPAN class=""> dtUTC</SPAN><SPAN class="">.</SPAN><SPAN class="">replace</SPAN><SPAN class="">(</SPAN><SPAN class="">tzinfo</SPAN><SPAN class="">=</SPAN><SPAN class="">from_zone</SPAN><SPAN class="">).</SPAN><SPAN class="">astimezone</SPAN><SPAN class="">(</SPAN><SPAN class="">to_zone</SPAN><SPAN class="">)</SPAN><SPAN class=""> </SPAN><SPAN class="">return</SPAN><SPAN class=""> dtLocal </SPAN><SPAN class="">...</SPAN><SPAN class=""></SPAN><SPAN class=""># get dimension values from the time dimension</SPAN><SPAN class="">dimension_values </SPAN><SPAN class="">=</SPAN><SPAN class=""> nc_FP</SPAN><SPAN class="">.</SPAN><SPAN class="">getDimensionValue</SPAN><SPAN class="">(</SPAN><SPAN class="">"time"</SPAN><SPAN class="">,</SPAN><SPAN class=""> </SPAN><SPAN class="">0</SPAN><SPAN class="">)</SPAN><SPAN class=""></SPAN><SPAN class=""># the dimension_values is of a unicode type of data, e.g. u'20/11/2017 1:00:00 PM'</SPAN><SPAN class="">strDimensionValues </SPAN><SPAN class="">=</SPAN><SPAN class=""> dimension_values</SPAN><SPAN class="">.</SPAN><SPAN class="">encode</SPAN><SPAN class="">(</SPAN><SPAN class="">'utf-8'</SPAN><SPAN class="">)</SPAN><SPAN class="">arcpy</SPAN><SPAN class="">.</SPAN><SPAN class="">AddMessage</SPAN><SPAN class="">(</SPAN><SPAN class="">"dimension_values: "</SPAN><SPAN class=""> </SPAN><SPAN class="">+</SPAN><SPAN class=""> strDimensionValues</SPAN><SPAN class="">)</SPAN><SPAN class="">dtDimensionValues </SPAN><SPAN class="">=</SPAN><SPAN class=""> convertToLocalDT</SPAN><SPAN class="">(</SPAN><SPAN class="">strDimensionValues</SPAN><SPAN class="">)</SPAN><SPAN class=""></SPAN><SPAN class="">...</SPAN><SPAN class=""></SPAN><SPAN class=""># Set dtDimensionValues as output which has an alias of "outDateTime" in the tool Properties window.</SPAN><SPAN class="">arcpy</SPAN><SPAN class="">.</SPAN><SPAN class="">SetParameter</SPAN><SPAN class="">(</SPAN><SPAN class="">5</SPAN><SPAN class="">,</SPAN><SPAN class=""> dtDimensionValues</SPAN><SPAN class="">)</SPAN>

When I imported this script into a Model as a custom tool and ran the tool, the variable only output the date but not the time section. For example, if the actual datetime is "2017-11-21 00:00:00" the outDateTime only shows "21/11/2017" as below.
