I figured it out, thanks to Dave S. and a number of old posts on this topic. My successful method:
Create a custom form.
At the top, import the admin widgets using from django.contrib.admin.widgets import AdminDateWidget
. Then, add the different fields of your form, using my_field = DateField(widget = AdminDateWidget)
whenever you want to use the date widget.
Create your form template
Place the following toward the top to include the appropriate css/js files:
{% load i18n admin_modify adminmedia %}
{% block extrahead %}{{ block.super }}
<link rel="stylesheet" type="text/css" href="{% admin_media_prefix %}css/base.css" />
<link rel="stylesheet" type="text/css" href="{% admin_media_prefix %}css/widgets.css" />
<script type="text/javascript" src="/jsi18n/"></script>
<script type="text/javascript" src="{% admin_media_prefix %}js/core.js"></script>
{{ form.media }}
{% endblock %}
Note: You do not necessarily need all of this, depending upon your version of Django and how you are implementing the form fields. this is what I found that I needed to use the widgets.
Now just output your form like normal, and the JS should automatically convert it to a date field. Enjoy!