这可能是一个简单的解决方案,但我被卡住了,基本上我需要将传入的yyyy-MM-dd转换为MM / dd / yyyy,如果传入日期为零,则输出也应为零。
传入日期可以是以下格式
2015-01-25 or nil
输出日期应为
01/25/2015 or nil
我是从以下链接尝试一个 Convert Date yyyy/mm/dd to MM dd yyyy但无法使其发挥作用。
感谢您的帮助。
忘记提及,在xml文件中,nil的传入日期格式如下
<Through_Date__c xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:nil="true"/>
因此,如果我得到上述格式,输出应该只是nil
答案 0 :(得分:8)
日期toString
功能支持格式化。见this。而且你还想处理我从here获取的未定义的案例。因此,对于您的情况,您可以这样做:
function format(inputDate) {
var date = new Date(inputDate);
if (!isNaN(date.getTime())) {
// Months use 0 index.
return date.getMonth() + 1 + '/' + date.getDate() + '/' + date.getFullYear();
}
}
编辑:发表评论
如果填充很重要,您只需将其添加到:
var d = date.getDate().toString();
(d[1]?d:"0"+d[0])
我已对fiddle
进行了更新答案 1 :(得分:6)
尝试使用RegEx:
var format = function(input) {
var pattern = /(\d{4})\-(\d{2})\-(\d{2})/;
if (!input || !input.match(pattern)) {
return null;
}
return input.replace(pattern, '$2/$3/$1');
};
console.log(format('2015-01-25'));
console.log(format('2000-12-01'));
console.log(format(''));
console.log(format(null));
使用String#split和Array#join,push&amp;移:
var format = function(input) {
var array = (input || '').toString().split(/\-/g);
array.push(array.shift());
return array.join('/') || null;
};
console.log(format('2015-01-25'));
console.log(format('2000-12-01'));
console.log(format(''));
console.log(format(null));
答案 2 :(得分:2)
如果你想去贫民窟风格并使用易于理解的代码,而你不关心使用日期对象,试试这个!
function changeDateFormat(inputDate){ // expects Y-m-d
var splitDate = inputDate.split('-');
if(splitDate.count == 0){
return null;
}
var year = splitDate[0];
var month = splitDate[1];
var day = splitDate[2];
return month + '\\' + day + '\\' + year;
}
var inputDate = '2015-01-25';
var newDate = changeDateFormat(inputDate);
console.log(newDate); // 01/25/2015
答案 3 :(得分:0)
如果您的日期尚未从字符串中解析,则可以简单地重新排列其组件:
var s = '2015-01-25';
if (s) {
s = s.replace(/(\d{4})-(\d{1,2})-(\d{1,2})/, function(match,y,m,d) {
return m + '/' + d + '/' + y;
});
}
答案 4 :(得分:0)
谢谢大家,我能够从你的所有帖子中获取一些想法,并提出了这个代码似乎在我的情况下工作正常
if((typeof inStr == 'undefined') || (inStr == null) ||
(inStr.length <= 0)) {
return '';
}
var year = inStr.substring(0, 4);
var month = inStr.substring(5, 7);
var day = inStr.substring(8, 10);
return month + '/' + day + '/' + year;
答案 5 :(得分:0)
您也可以使用Vanilla JS尝试以下方法。我已将日期转换为string
并对其进行了解析,以获取所需的格式:
function tranformDate(strDate) {
let result = '';
if (date) {
let parts = date.split('-');
result = `${parts[1]}/${parts[2]}/${parts[0]}`;
}
return result;
}
let date = new Date().toISOString().split('T')[0];
console.log('raw date: ' + date);
console.log('formatted date: ' + tranformDate(date));
答案 6 :(得分:0)
您可以处理各种格式的 JavaScript 日期。
对于 dd/MM/yyyy,您可以使用
var date = new Date().toLocalDateString()
或
var date = new Date('2021-07-28').toLocalDateString()
输出:'28/07/2021'
MM/dd/yyyy
var date = new Date().toLocaleDateString("en-US", { year: "numeric", month: "2-digit", day: "2-digit" })
或
var date = new Date('2021-07-28').toLocaleDateString("en-US", { year: "numeric", month: "2-digit", day: "2-digit" })
输出:'07/28/2021'
或者,您可以使用以下日期函数处理自定义日期格式
let date = new Date()
let dateString = [
date.getMonth() + 1,
date.getDate(),
date.getFullYear(),
].join('/')
}
输出:07/28/2021