簡體   English   中英

將 MySql DateTime stamp 轉換為 JavaScript 的 Date 格式

[英]Convert MySql DateTime stamp into JavaScript's Date format

有誰知道我如何獲取 MySQL datetime時間數據類型值,例如YYYY-MM-DD HH:MM:SS並解析它或將其轉換為在 JavaScript 的Date()函數中工作,例如:- Date('YYYY ,MM,DD,HH,MM,SS);

謝謝!

這里給出的一些答案要么過於復雜,要么根本不起作用(至少,不是在所有瀏覽器中)。 如果您退后一步,您可以看到 MySQL 時間戳的每個時間組件的順序與Date()構造函數所需的參數的順序相同。

所需要的只是對字符串進行非常簡單的拆分:

// Split timestamp into [ Y, M, D, h, m, s ]
var t = "2010-06-09 13:12:01".split(/[- :]/);

// Apply each element to the Date function
var d = new Date(Date.UTC(t[0], t[1]-1, t[2], t[3], t[4], t[5]));

console.log(d);
// -> Wed Jun 09 2010 14:12:01 GMT+0100 (BST)

公平警告:這假定您的 MySQL 服務器正在輸出 UTC 日期(這是默認設置,如果字符串沒有時區部分,則建議使用)。

要添加到優秀的Andy E 答案中,常用的功能可能是:

Date.createFromMysql = function(mysql_string)
{ 
   var t, result = null;

   if( typeof mysql_string === 'string' )
   {
      t = mysql_string.split(/[- :]/);

      //when t[3], t[4] and t[5] are missing they defaults to zero
      result = new Date(t[0], t[1] - 1, t[2], t[3] || 0, t[4] || 0, t[5] || 0);          
   }

   return result;   
}

通過這種方式,給定 MySQL 日期/時間,格式"YYYY-MM-DD HH:MM:SS" ,甚至是短格式(僅日期) "YYYY-MM-DD" ,您可以執行以下操作:

var d1 = Date.createFromMysql("2011-02-20");
var d2 = Date.createFromMysql("2011-02-20 17:16:00");
alert("d1 year = " + d1.getFullYear());

我想我可能找到了一種更簡單的方法,沒有人提到。

MySQL DATETIME 列可以通過以下方式轉換為 unix 時間戳:

SELECT unix_timestamp(my_datetime_column) as stamp ...

我們可以使用構造函數創建一個新的 JavaScript Date 對象,該構造函數需要從紀元開始的毫秒數。 unix_timestamp 函數返回自紀元以來的秒數,因此我們需要乘以 1000:

SELECT unix_timestamp(my_datetime_column) * 1000 as stamp ...

結果值可直接用於實例化正確的 Javascript Date 對象:

var myDate = new Date(<?=$row['stamp']?>);

希望這可以幫助。

現代瀏覽器(IE10+)的一種襯里:

var d = new Date(Date.parse("2010-06-09 13:12:01"));
alert(d); // Wed Jun 09 2010 13:12:01 GMT+0100 (GMT Daylight Time)

只是為了好玩,這里有一個適用於舊版瀏覽器的單行代碼(現已修復):

new (Function.prototype.bind.apply(Date, [null].concat("2010-06-09 13:12:01".split(/[\s:-]/)).map(function(v,i){return i==2?--v:v}) ));
alert(d); // Wed Jun 09 2010 13:12:01 GMT+0100 (GMT Daylight Time)

最新版本的 JavaScript 將讀取 ISO8601 格式的日期,因此您只需將空格更改為“T”,執行以下操作之一:

#MySQL
select date_format(my_date_column,'%Y-%m-%dT%T') from my_table;

#PHP
$php_date_str = substr($mysql_date_str,0,10).'T'.substr($mysql_date_str,11,8);

//JavaScript
js_date_str = mysql_date_str.substr(0,10)+'T'+mysql_date_str.substr(11,8);

進一步添加到 Marco 的解決方案中。 我直接對 String 對象進行了原型設計。

String.prototype.mysqlToDate = String.prototype.mysqlToDate || function() {
    var t = this.split(/[- :]/);
    return new Date(t[0], t[1]-1, t[2], t[3]||0, t[4]||0, t[5]||0);
};

這樣你就可以直接去:

var mySqlTimestamp = "2011-02-20 17:16:00";
var pickupDate = mySqlTimestamp.mysqlToDate();

有一個更簡單的方法,sql時間戳字符串:

2018-07-19 00:00:00

Date() 接收的最接近時間戳的格式如下,因此將空格替換為“T”:

var dateString = media.intervention.replace(/\s/g, "T");

“2011-10-10T14:48:00”

然后,創建日期對象:

var date = new Date(dateString);

結果將是日期對象:

2018 年 7 月 19 日星期四 00:00:00 GMT-0300 (Horário Padrão de Brasília)

來自安迪的回答,對於 AngularJS - 過濾器

angular
    .module('utils', [])
.filter('mysqlToJS', function () {
            return function (mysqlStr) {
                var t, result = null;

                if (typeof mysqlStr === 'string') {
                    t = mysqlStr.split(/[- :]/);

                    //when t[3], t[4] and t[5] are missing they defaults to zero
                    result = new Date(t[0], t[1] - 1, t[2], t[3] || 0, t[4] || 0, t[5] || 0);
                }

                return result;
            };
        });
var a=dateString.split(" ");
var b=a[0].split("-");
var c=a[1].split(":");
var date = new Date(b[0],(b[1]-1),b[2],b[0],c[1],c[2]);

首先,您可以通過將 YMD 格式拆分為組件並使用這些日期組件,為 JavaScript 的 Date 對象(類)提供新方法“fromYMD()”,以將 MySQL 的 YMD 日期格式轉換為 JavaScript 格式:

Date.prototype.fromYMD=function(ymd)
{
  var t=ymd.split(/[- :]/); //split into components
  return new Date(t[0],t[1]-1,t[2],t[3]||0,t[4]||0,t[5]||0);
};

現在您可以定義自己的對象(JavaScript 世界中的函數):

function DateFromYMD(ymd)
{
  return (new Date()).fromYMD(ymd);
}

現在您可以簡單地從 MySQL 日期格式創建日期;

var d=new DateFromYMD('2016-07-24');

在將字符串日期提供給 Date 對象之前,您可以使用 Js Date() 方法構造這樣的布局:

 parseDate(date){
         const formated = new Date(date)
         
         return `${formated.getFullYear()}/${formated.getMonth()}/${formated.getDay()}`;
     },

如何在 Javascript 中操作 MySQL 時間戳

我今天不得不處理這個話題

所以我混合了兩個我想分享的功能

function mysqlDatetoJs(mysqlTimeStamp){
    var t = mysqlTimeStamp.split(/[- :]/);
        return new Date(t[0], t[1]-1, t[2], t[3], t[4], t[5]);
    }

接着

function prettyDate(date) {
    var months =  ['Gen', 'Feb', 'Mar', 'Apr', 'Mag', 'Giu',
                    'Lug', 'Ago', 'Set', 'Ott', 'Nov', 'Dic'];

    return date.getUTCDate() + ' ' + months[date.getUTCMonth()] 
    + ' ' + date.getUTCFullYear();
    }

我用它來構建這樣的動態表

td.innerHTML = prettyDate(mysqlDatetoJs(array[i].data));

並在 TD 中打印日期

4 Set 2021

鑒於 array[i].data 是 MySQL 表中的日期記錄,特別是對於這個回復,它的形式為

2021-09-04 11:25:20

希望它有用

盡管我在此頁面https://www.digitalocean.com/community/tutorials/understanding-date-and-time-in-javascript中找到了干凈的 date() 解釋

您可以使用 unix 時間戳來指導:

SELECT UNIX_TIMESTAMP(date) AS epoch_time FROM table;

然后將 epoch_time 放入 JavaScript,這很簡單:

var myDate = new Date(epoch_time * 1000);

乘以 1000 是因為 JavaScript 需要毫秒,而 UNIX_TIMESTAMP 給出秒。

谷歌的快速搜索提供了這個:

 function mysqlTimeStampToDate(timestamp) {
    //function parses mysql datetime string and returns javascript Date object
    //input has to be in this format: 2007-06-05 15:26:02
    var regex=/^([0-9]{2,4})-([0-1][0-9])-([0-3][0-9]) (?:([0-2][0-9]):([0-5][0-9]):([0-5][0-9]))?$/;
    var parts=timestamp.replace(regex,"$1 $2 $3 $4 $5 $6").split(' ');
    return new Date(parts[0],parts[1]-1,parts[2],parts[3],parts[4],parts[5]);
  }

來源: http ://snippets.dzone.com/posts/show/4132

為什么不這樣做:

var d = new Date.parseDate( "2000-09-10 00:00:00", 'Y-m-d H:i:s' );

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM