Есть ли способ обновить только текст элемента управления содержимым средства выбора даты, а не детали форматирования?

Я работаю над одним приложением надстройка Word, в котором у меня есть несколько элементов управления содержимым выбора даты, устанавливая текстовое значение для этого элемента управления содержимым. также изменяет его формат в соответствии с системным форматом даты.

Я настраиваю DateDisplayFormat и DateDisplayLocale явным образом, но он показывает значение даты в соответствии с системным форматом даты.

ContentControl.Range.Text = "21-12-16";
ContentControl.DateDisplayFormat ="yy-M-d";
ContentControl.DateDisplayLocale = 
Microsoft.Office.Interop.Word.WdLanguageID.wdSimplifiedChinese;

Мой системный формат даты: мм/дд/гггг

-Actual result : 16-12-21 (MM/dd/yyyy)
-Expected result : 21-12-16 (yy-M-d)

person Rajnish Jha    schedule 16.10.2019    source источник
comment
Вы уверены, что DateDisplayFormat это "yy-M-d"? Разве это не должно быть "yy-MM-dd"?   -  person Sach    schedule 16.10.2019
comment
Да @Sach, это только yy-M-d. Это формат короткой строки даты. см. эту ссылку   -  person Rajnish Jha    schedule 17.10.2019


Ответы (1)


Я считаю, что проблема возникает из-за двусмысленности Range.Text = 16-12-21.

Это можно интерпретировать в любом случае, как 2016 или 2021 год. Word действительно полагается на системные настройки Windows для таких вещей, как интерпретация того, какой должна быть дата, а не на что-либо локальное. Я думал, что, возможно, изменение порядка формата и ввода данных может повлиять, но это не так.

Просто укажите четырехзначный год, что является стандартной хорошей практикой с тех пор, как люди осознали потенциальные проблемы «миллениума» еще в 1990-х годах, и проблем не будет. Также нет проблем, когда кто-то использует DatePicker в пользовательском интерфейсе. Так...

ContentControl.Range.Text = "2021-12-16";
ContentControl.DateDisplayFormat ="yy-M-d";
ContentControl.DateDisplayLocale = 
Microsoft.Office.Interop.Word.WdLanguageID.wdSimplifiedChinese;
person Cindy Meister    schedule 17.10.2019
comment
Большое спасибо @Cindy за ваш ценный комментарий и указание. Предложенный вами подход предоставить четырехзначный год работает нормально, я проверил его. На самом деле дело в том, что мы реализовали локаль в нашем приложении, и у пользователя есть возможность выбрать локаль и формат, поэтому мы не можем контролировать формат. Было бы здорово, если бы вы могли поделиться некоторыми указателями вокруг него. - person Rajnish Jha; 17.10.2019
comment
Я не понимаю проблемы с локалью, @RajnishJha. Код в вопросе указывает, что дата передается кодом. Это означает, что код может форматировать его. Вы должны предоставлять *точную информацию в вопросах, чтобы не тратить время людей. - person Cindy Meister; 17.10.2019
comment
извините @CindyMeister, если комментарии выше были вам непонятны. Я принял ваш подход в качестве ответа, поскольку смог продолжить это. Еще раз спасибо. - person Rajnish Jha; 18.10.2019
comment
@ Не за что :-) Я рад, что теперь все работает! - person Cindy Meister; 18.10.2019