js date to string - Преобразование строки в дату в JavaScript




15 Answers

К сожалению, я узнал, что

var mydate = new Date('2014-04-03');
console.log(mydate.toDateString());

возвращает «Ср Апр 02 2014». Я знаю, что это звучит безумно, но это случается для некоторых пользователей.

Пуленепробиваемым решением является следующее:

var parts ='2014-04-03'.split('-');
// Please pay attention to the month (parts[1]); JavaScript counts months from 0:
// January - 0, February - 1, etc.
var mydate = new Date(parts[0], parts[1] - 1, parts[2]); 
console.log(mydate.toDateString());

js date parse

Как преобразовать строку в дату в JavaScript?

var st = "date in some format"
var dt = new date();

var dt_st= //st in date format same as dt



function stringToDate(_date,_format,_delimiter)
{
            var formatLowerCase=_format.toLowerCase();
            var formatItems=formatLowerCase.split(_delimiter);
            var dateItems=_date.split(_delimiter);
            var monthIndex=formatItems.indexOf("mm");
            var dayIndex=formatItems.indexOf("dd");
            var yearIndex=formatItems.indexOf("yyyy");
            var month=parseInt(dateItems[monthIndex]);
            month-=1;
            var formatedDate = new Date(dateItems[yearIndex],month,dateItems[dayIndex]);
            return formatedDate;
}

stringToDate("17/9/2014","dd/MM/yyyy","/");
stringToDate("9/17/2014","mm/dd/yyyy","/")
stringToDate("9-17-2014","mm-dd-yyyy","-")



new Date(2000, 10, 1) даст вам »Wed Nov 01 2000 00:00:00 GMT + 0100 (CET)"

Смотрите, что 0 за месяц дает вам январь




moment.js ( momentjs.com ) - это полный и хороший пакет для использования дат и поддерживает строки ISO 8601 .

Вы можете добавить дату и формат строки.

moment("12-25-1995", "MM-DD-YYYY");

И вы можете проверить, действительна ли дата.

moment("not a real date").isValid(); //Returns false

См. Документацию http://momentjs.com/docs/#/parsing/string-format/

Рекомендация. Я рекомендую использовать пакет для дат, который содержит много форматов, потому что часовая настройка и управление временем в формате - большая проблема, момент js решает много форматов. Вы могли легко проанализировать дату с простой строки на сегодняшний день, но я думаю, что это тяжелая работа для поддержки всех форматов и вариантов дат.




Если вы хотите конвертировать из формата «dd / MM / yyyy». Вот пример:

var pattern = /^(\d{1,2})\/(\d{1,2})\/(\d{4})$/;
var arrayDate = stringDate.match(pattern);
var dt = new Date(arrayDate[3], arrayDate[2] - 1, arrayDate[1]);

Это решение работает в версиях IE менее 9.




Date.parse почти получает то, что вы хотите. Он задыхается на am / pm , но с некоторым взломом вы можете заставить его работать:

var str = 'Sun Apr 25, 2010 3:30pm',
    timestamp;

timestamp = Date.parse(str.replace(/[ap]m$/i, ''));

if(str.match(/pm$/i) >= 0) {
    timestamp += 12 * 60 * 60 * 1000;
}



Только new Date(st);

Предполагая, что это правильный формат.




Я создал скрипку для этого, вы можете использовать функцию toDate () в любой строке даты и предоставить формат даты. Это вернет вам объект Date. https://jsfiddle.net/Sushil231088/q56yd0rp/

"17/9/2014".toDate("dd/MM/yyyy", "/")



Еще один способ сделать это:

String.prototype.toDate = function(format) {
    format = format || "dmy";
    var separator = this.match(/[^0-9]/)[0];
    var components = this.split(separator);
    var day, month, year;
    for (var key in format) {
        var fmt_value = format[key];
        var value = components[key];
        switch (fmt_value) {
            case "d":
                day = parseInt(value);
                break;
            case "m":
                month = parseInt(value)-1;
                break;
            case "y":
                year = parseInt(value);
        }
    }
    return new Date(year, month, day);
};
a = "3/2/2017";
console.log(a.toDate("dmy"));
// Date 2017-02-03T00:00:00.000Z



var date = new Date(year, month, day);

или же

var date = new Date('01/01/1970');

строка даты в формате '01 -01-1970 'не будет работать в FireFox, поэтому лучше использовать «/» вместо «-» в строке формата даты.




var a = "13:15"
var b = toDate(a, "h:m")
alert(b);

function toDate(dStr, format) {
  var now = new Date();
  if (format == "h:m") {
    now.setHours(dStr.substr(0, dStr.indexOf(":")));
    now.setMinutes(dStr.substr(dStr.indexOf(":") + 1));
    now.setSeconds(0);
    return now;
  } else
    return "Invalid Format";
}




Значения ISO 8601-esque, столь же превосходные, как стандарт, до сих пор не получили широкого распространения.

Это отличный ресурс для определения формата datestring, который вы должны использовать:

http://dygraphs.com/date-formats.html

Да, это означает, что ваша датировка может быть такой простой, как в противоположность

"2014/10/13 23:57:52" вместо "2014-10-13 23:57:52"




используйте этот код: (моя проблема была решена с помощью этого кода)

function dateDiff(date1, date2){
var diff = {}                           // Initialisation du retour
var tmp = date2 - date1;

tmp = Math.floor(tmp/1000);             // Nombre de secondes entre les 2 dates
diff.sec = tmp % 60;                    // Extraction du nombre de secondes

tmp = Math.floor((tmp-diff.sec)/60);    // Nombre de minutes (partie entière)
diff.min = tmp % 60;                    // Extraction du nombre de minutes

tmp = Math.floor((tmp-diff.min)/60);    // Nombre d'heures (entières)
diff.hour = tmp % 24;                   // Extraction du nombre d'heures

tmp = Math.floor((tmp-diff.hour)/24);   // Nombre de jours restants
diff.day = tmp;

return diff;

}




Вы можете использовать регулярное выражение для синтаксического анализа строки до подробного времени, а затем создать дату или любой формат возврата, например:

//example : let dateString = "2018-08-17 01:02:03.4"

function strToDate(dateString){
    let reggie = /(\d{4})-(\d{2})-(\d{2}) (\d{2}):(\d{2}):(\d{2}).(\d{1})/
  , [,year, month, day, hours, minutes, seconds, miliseconds] = reggie.exec(dateString)
  , dateObject = new Date(year, month-1, day, hours, minutes, seconds, miliseconds);
  return dateObject;
}
alert(strToDate(dateString));



Вы также можете сделать: mydate.toLocaleDateString ();






Related