Измените формат даты на дд / мм / гггг - PullRequest
1 голос
/ 19 апреля 2019

Кто-нибудь знает, как настроить текущий код JS и сделать так, чтобы [ItemDate] отображала дату в формате дд / мм / гггг вместо значения по умолчанию: ММ / дд / гггг ЧЧ: мм: сс

Код скопирован с веб-сайта, который преобразует XML в читаемый формат HMTL ... проблема только в формате date.format, где мне трудно реализовать это изменение.

    <script type="text/javascript" src="https://code.jquery.com/jquery-3.2.1.min.js"></script>  
<script type="text/javascript">  
SPClientTemplates.TemplateManager.RegisterTemplateOverrides({  
  Templates: {  
           Fields: {  
                'ItemsOverview': {   
                    'View': repeatingSectionViewTemplate  
                 }  
           }  
  }  
});  

function repeatingSectionViewTemplate(ctx) {  
   var xml = ctx.CurrentItem["ItemsOverview"];  
   var decodedxml = xml.DecodeXMLNotation();   
   var htm = "";  

   xmlDoc = $.parseXML( decodedxml );  
   $xml = $( xmlDoc );  
   $xml.find("Item").each(function() {  
      htm = htm + "<tr><td width='50px'>" + $(this).find("ItemNumber").text() + "</td><td width='140px'>" + $(this).find("ItemDescription").text() + "</td><td width='70px'>" + $(this).find("ItemStatus").text() + "</td><td>" + $(this).find("ItemDate").text()
 +"</td><td>" + $(this).find("CollectedByUser").text() +"</td></tr>"; 
   });  

   return "<table border='1px' width='550px'  style='border-collapse:collapse;'><tr><th align='left' width='50px'>Item</th><th align='left' width='180px'>Description</th><th align='left' width='70px'>Status</th><th align='left' width='70px'>Date</th><th align='left' width='170px'>Collected By</th></tr>" + htm +"</table>";  
};  

//Replaces html notation to their equivalent xml escape characters.  
String.prototype.DecodeXMLNotation = function () {  
   var output = this;  
    if ($.trim(output) != "") {  
        output = output.replace(/&apos;/g, "'").replace(/&quot;/g, '"').replace(/&gt;/g, '>').replace(/&lt;/g, '<').replace(/&amp;/g, '&');  
    }  
    else {  
        output = "";  
    }  
    return output;  
};  

</script>

Ответы [ 4 ]

1 голос
/ 19 апреля 2019

Вам нужно создать функцию, которая переформатирует дату для вас.

function formatDate(dateStr) {
    const d = new Date(dateStr);
    return d.getDate().toString().padStart(2, '0') + '/' + d.getMonth() + 1 + '/' + d.getFullYear() + ' ' + d.getHours() + ':' + d.getMinutes().toString().padStart(2, '0');
}

И вместо $(this).find("ItemDate").text() вы бы использовали formatDate($(this).find("ItemDate").text())

0 голосов
/ 19 апреля 2019

Я думаю, что "дд / мм / гггг" это французский формат:

var date = new Date('12/17/2018 03:24:00');

console.log(date.toLocaleDateString("fr-FR"));
0 голосов
/ 19 апреля 2019

Либо используйте плагин Moment.js :
Установите с помощью:

npm install moment --save

Затем используйте

var moment = require('moment');
let formatted = moment().format('DD/MM/YYYY');

в вашем файле.

Или, если вы делаете это встроенным в html, используйте:

<script src="moment.js"></script>
<script>
    let formatted = moment().format('DD/MM/YYYY');
</script>

ИЛИ
Вы можете использовать следующую функцию, которая преобразует в тот жеФормат:

parseDate = (d) => {
        let date = new Date(d);        
        var mm = date.getMonth() + 1; // getMonth() is zero-based
        var dd = date.getDate();

        let newdate = [(dd>9 ? '' : '0') + dd + '/',
                    (mm>9 ? '' : '0') + mm+  '/',
                    date.getFullYear(),
                   ].join('');
        return newd + ' at ' + date.getUTCHours() + ':' + date.getUTCMinutes() + ':' + date.getUTCSeconds();
    }

Надеюсь, это поможет.

0 голосов
/ 19 апреля 2019

Лучший способ сделать это - плагин Moment.js. момент () формат ( "DD / MM / YYYY).

var newDate = new Date();
console.log(newDate);
var formattedDate = moment().format('DD/MM/YYYY');
console.log(formattedDate);
<script src="https://momentjs.com/downloads/moment.js"></script>
...