1

我有一个具有显示的通用日期字段,DD-MM-YYYY但存储在数据库中的实际值是YYYY-MM-DD. 问题是这个值也被传输到一个简单文本字段(具有只读属性)内的远程服务器,我想在这个字段上进行交互以更改他的显示DD-MM-YYYY

我不想触摸数据库结构中的某些内容来更改日期的存储方式。我准确地说我无权访问此远程服务器的 html,但我可以通过将代码放入 JS 文件来修改某些字段。

我在这里和一些论坛中查看过,但我没有找到解决方案,并且由于我对 JavaScript 的了解很差,我被困住了。感谢。

4

4 回答 4

1

使用内置的 javascript 函数来构建您想要的格式。将字符串解析为日期对象并使用以下函数创建所需的格式

getDate() -> to get date
getMonth() -> to get  month
getFullYear() -> to get  year

例子

//var birth_date = document.getElementById('birth_date');
//use birth_date instead of hard coded date
//var day = new Date(Date.parse(birth_date));
var day = new Date(Date.parse("2013-09-02"));
alert(day.getDate() + "-" + day.getMonth() + "-" +  day.getFullYear());


//set value

document.getElementById('birth_date').value = day.getDate() + "-" + day.getMonth() + "-" +  day.getFullYear();

JSFIDDLE

于 2013-09-02T11:34:33.860 回答
0

好吧,我们可以使用简单的 javascript 函数来做到这一点。我们只需要传递服务器日期(YYYY-MM-DD),它将返回预期日期(DD-MM-YYYY)格式。

        function convertDate(serverDate) {
            var dateCollection = serverDate.match(/\d+/g),
                year = dateCollection[0],
                month = dateCollection[1],
               day = dateCollection[2];

           return day + '-' + month + '-' + year;
          }

例子:-

     convertDate('2013-09-02'); // (YYYY-MM-DD) format

输出:-

    '02-09-2013' //(DD-MM-YYYY) format

希望对你有帮助...

于 2013-09-02T11:58:50.693 回答
0

您可以捕获表单提交事件并在发送之前更改值:

假设您有一个表格#myForm

var form = document.getElementById('myForm');

要捕获提交:

try {
    form.addEventListener("submit", changeValue, false);
} catch(e) {
    form.attachEvent("onsubmit", changeValue); //Internet Explorer 8-
}

现在您可以就地更改所需的值。

function changeValue(){
    var field = document.getElementById('idOfField');
    field.value = field.value.split('-').reverse().join('-');
}
于 2013-09-02T12:01:53.737 回答
0

假设你有一个字符串var s = '1989-05-06';。您可以像这样分别获取年、月和日:

var my_date = s.split('-');
var year = my_date[0];
var month = my_date[1];
var day = my_date[2];

然后,您可以显示下面的字符串(或以您想要的任何格式组织日、月和年):

var display_str = '' + day + '-' + month + '-' + year;
于 2013-09-02T11:37:09.523 回答