【问题标题】:Change date format who is stored in text field更改存储在文本字段中的日期格式
【发布时间】:2013-09-02 21:02:19
【问题描述】:

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

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

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

【问题讨论】:

标签: javascript


【解决方案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

【讨论】:

  • 你能举个例子吗?例如我有这个代码:varbirth_date = document.getElementById('birth_date');你能完成吗?
  • 好的,但是没有警告框怎么办?我只想改变显示而不用其他任何东西..
  • 我试过了,但这不起作用。正如我所说,该值位于一个简单的文本字段中。所以重新安排内容很重要,我想使用“日期”变量没有效果。是不是可以用 Innerhtml 代替这个任务?
  • 更新了 JS Fiddle,它可以工作了。检查小提琴。它通过转换类型再次设置输入值
【解决方案2】:

假设你有一个字符串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;

【讨论】:

    【解决方案3】:

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

    假设你有一个表单#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('-');
    }
    

    【讨论】:

      【解决方案4】:

      好吧,我们可以使用简单的 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
      

      希望对你有所帮助...

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2015-12-21
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2023-03-27
        相关资源
        最近更新 更多