【问题标题】:Javascript function to convert date yyyy/mm/dd to dd/mm/yy将日期 yyyy/mm/dd 转换为 dd/mm/yy 的 Javascript 函数
【发布时间】:2010-01-18 14:46:20
【问题描述】:

我正在尝试在 javascript 上创建一个函数,以便以格式 (yyyy-mm-dd) 从我的数据库中获取日期并将其显示在页面上为 (dd/mm/yy)。

我将不胜感激。

谢谢。

PD:如果您需要更多说明,请告诉我。

【问题讨论】:

  • 如何从数据库中获取日期?
  • 我可以请求保持原样吗? yyyy-mm-dd 是一种完全可读的日期格式。 dd/mm/yy 是一种模棱两可的恐怖。 (是英国还是美国的日期排序?什么世纪?我不能通过看它立即判断。)
  • @bobince:这取决于使用它的上下文。如果它是一个仅在一个国家或内部使用的网络应用程序,那么用户将知道常见的日期格式是什么,并且在看到他们没想到的格式时可能会更加困惑。此外,yyyy-mm-dd 不是 UI 中使用的非常常见的格式,对于新手用户来说,它仍然会引起歧义(是 yyyy-mm-dd 还是 yyyy-dd-mm?)。

标签: javascript function date


【解决方案1】:

假设您不担心函数是动态的,最简单的方法:

function reformatDate(dateStr)
{
  dArr = dateStr.split("-");  // ex input "2010-01-18"
  return dArr[2]+ "/" +dArr[1]+ "/" +dArr[0].substring(2); //ex out: "18/01/10"
}

【讨论】:

    【解决方案2】:

    一行完成:

    date.split("-").reverse().join("-");
    
    // 2021-09-16 => 16-09-2021
    

    【讨论】:

      【解决方案3】:

      使用任何一个js函数将日期yyyy/mm/dd转换为dd/mm/yy

      类型 1

      function ChangeFormateDate(oldDate){
         var p = dateString.split(/\D/g)
         return [p[2],p[1],p[0] ].join("/")
      }
      

      类型 2

      function ChangeFormateDate(oldDate)
      {
         return oldDate.toString().split("/").reverse().join("/");
      }
      

      您可以使用以下方法调用这些函数:

      ChangeFormateDate("2018/12/17") //"17/12/2018"
      

      【讨论】:

        【解决方案4】:

        如果您确定来自服务器的日期是有效的,一个简单的 RegExp 可以帮助您更改格式:

        function formatDate (input) {
          var datePart = input.match(/\d+/g),
          year = datePart[0].substring(2), // get only two digits
          month = datePart[1], day = datePart[2];
        
          return day+'/'+month+'/'+year;
        }
        
        formatDate ('2010/01/18'); // "18/01/10"
        

        【讨论】:

        • 以防万一有人想显示全年,即 4 位数字使用:year = datePart[0].substring(0,4) 仅添加,因为它可能不会立即显而易见。感谢您的回答!
        【解决方案5】:

        使用来自此来源的函数 getDateFromFormat() 和 formatDate(): http://mattkruse.com/javascript/date/source.html
        例子也有

        【讨论】:

        • 网址链接过时了。
        【解决方案6】:

        试试这个:

        function convertDate(dateString){
          var p = dateString.split(/\D/g)
          return [p[2],p[1],p[0] ].join("-")
        }
        
        convertDate("2001-9-11")//"11-9-2001"
        

        【讨论】:

          【解决方案7】:

          您还可以使用解构和模板字面量,以防您确定始终会收到YYYY-MM-DD 中的日期。

          const changeDateFormatTo = date => {
            const [yy, mm, dd] = date.split(/-/g);
            return `${dd}/${mm}/${yy}`;
          };
          
          const formattedDate = changeDateFormatTo("2019-08-14");
          console.log(`Formatted date is: ${formattedDate}`);

          【讨论】:

            【解决方案8】:

            您可能还想研究使用 date.js:

            http://www.datejs.com

            为了让您的应用程序适应未来,您可能希望以 UTC 时间戳和 JavaScript 格式返回时间。这将允许您支持不同国家(在美国,我们最熟悉 DD-MM-YYYY 或实例)以及时区的不同格式。

            【讨论】:

              【解决方案9】:

              这是一个简单的案例,但每个人都在使用字符串方法!这有点野蛮:-)

              Date 对象就是为此而设置的,一旦你掌握了它,它会让你走得更远。您的日期没有时区,因此我建议您在进出时都强制使用 UTC。 en-GB 语言环境强制使用 dd-mm,但您应该记住,说英语的用户在日期格式上被分成中间部分,并且每一部分都觉得对方的格式完全令人困惑。你真的应该尝试让你的数字日期格式适应用户的偏好,特别是因为它很简单!

              所以...

              new Vue({
                el: '#vueRoot',
                data: {kennedy: '1963-11-22'},
                computed:{
                  kennedyDdmm(){
                    return new Date(this.kennedy + 'T00:00:00Z')
                    .toLocaleDateString('en-GB',{timeZone:'UTC'})
                  },
                  kennedyAuto(){
                    return new Date(this.kennedy + 'T00:00:00Z')
                    .toLocaleDateString([],{timeZone:'UTC'})
                  }
                }
              })
              <script src="https://cdnjs.cloudflare.com/ajax/libs/vue/2.5.17/vue.js"></script>
              <div id='vueRoot'>
                <h1>in => {{kennedy}}</h1>
                <h1>dd-MM-yy => {{kennedyDdmm}}</h1>
                <h1>respect user prefs => {{kennedyAuto}}</h1>
              </div>

              【讨论】:

                猜你喜欢
                • 2013-10-25
                • 2021-12-31
                • 1970-01-01
                • 2022-01-25
                • 2012-03-05
                • 1970-01-01
                • 1970-01-01
                • 2019-01-14
                • 1970-01-01
                相关资源
                最近更新 更多