Hi,
I have added a new field called "delivery_date" on checkout page, and added a column (Datetime) on sales_order table.
I have made it work to save the delivery date, however the datepicker is picking up the US date in mm/dd/yyyy format.
I would like to change the format to UK date dd/mm/yyyy.
on LayoutProcessorPlugin.php
$jsLayout['components']['checkout']['children']['steps']['children']['shipping-step']['children']
['shippingAddress']['children']['shipping-address-fieldset']['children']['delivery_date'] = [
'component' => 'Magento_Ui/js/form/element/abstract',
'inputDateFormat' => 'dd/MM/Y',
'storeTimeZone' => 'GMT',
'config' => [
'customScope' => 'shippingAddress',
'template' => 'ui/form/field',
// 'elementTmpl' => 'ui/form/element/date',
'elementTmpl' => 'Vendor_Module/deliverydate_init',
'options' => [],
'id' => 'delivery-date'
],
'dataScope' => 'shippingAddress.delivery_date',
'label' => 'Delivery Date',
'provider' => 'checkoutProvider',
'visible' => true,
'validation' => [],
'sortOrder' => 200,
'id' => 'delivery-date'
];on deliverydate_init.html
<?php $date = $block->quote->getDeliveryDate(); ?>
<script>
require([
"jquery",
"jquery/ui",
'uiRegistry'
], function($, ui, registry){
registry.set('Vendor_Module_initDatepicker', function(element)
{
var beforeShowDay = function(date)
{
var excludeWeekdays = [<?php echo $block->helper->getConfigExcludedWeekdays(); ?>];
var holidays = [];
//holidays with * as year will get current and next year, become two holidays
<?php foreach ($block->getHolidays() as $holiday): ?>
holidays.push(<?php echo strtotime($holiday) * 1000; ?> );
<?php endforeach; ?>
function checkHolidays(date, holidays)
{
var result = true;
$.each(holidays, function(index, holiday){
var holiday = new Date(holiday);
if(isDateEqual(date, holiday))
{
result = false;
}
});
return result;
}
function checkWeekdays(date, excludeWeekdays)
{
return $.inArray(date.getDay(), excludeWeekdays) == -1;
}
function isDateEqual(date1, date2)
{
return date1.setHours(0,0,0,0) == date2.setHours(0,0,0,0);
}
var result = checkHolidays(date, holidays) && checkWeekdays(date, excludeWeekdays);
return [result, ''];
};
var minDate = <?php echo $block->helper->getConfigMinDelayDays(); ?>;
if(minDate == 0)
{
if(<?php echo json_encode($block->helper->isDisableAfterSameDayTime()) ?>)
{
minDate = 1;
}
}
if($(element).length > 0)
{
$(element).datepicker(
{
minDate : minDate,
maxDate : <?php echo $block->helper->getConfigMaxDelayDays(); ?>,
dateFormat: "<?php echo $block->convertDateFormatToJQueryUi($block->helper->getConfigDateFormat()); ?>",
beforeShowDay : beforeShowDay
}
);
}
else
{
return {
minDate : minDate,
maxDate : <?php echo $block->helper->getConfigMaxDelayDays(); ?>,
dateFormat: "<?php echo $block->convertDateFormatToJQueryUi($block->helper->getConfigDateFormat()); ?>",
beforeShowDay : beforeShowDay,
<?php if($date && $date != '0000-00-00 00:00:00'):?> //set date if it was saved in quote before
defaultDate : new Date(Date.parse('<?php echo $date ?>'.replace('-','/','g')))
<?php endif; ?>
};
}
});
});
</script>I would like to know what change I need to make?
I have added below code but it does not make difference.
'inputDateFormat' => 'dd/MM/Y', 'storeTimeZone' => 'GMT'
Hello @tvgarden,
Thank you for sharing such good information and also a good question. If you want to know the difference between them you can use the Magento 2 Delivery Date and then ask the developer for this query I am sure you got the answer about that
for the technical query contact sales@appjetty.com