2016-08-15 4 views
-1

Я хочу разбить эту строку на 4 переменные. «Вс авг. 28 2016 00:00:00 GMT + 0600 (Среднее азиатское стандартное время)» Я хочу получить переменную вроде этого, var day = «Sun» var month = «Aug» var year = 2016; Как я могу сделать это в чистом js?Как разбить строку на 4 переменные с помощью JavaScript

+1

Вы можете прочитать на [ 'date' объекта] (https://developer.mozilla.org/EN-US/Docs/Web/JavaScript/Справка/Global_Objects/Date). –

+0

Пробовал "var res = str.split (" "); –

ответ

1

Кроме того, вы можете использовать деструктурирующие, если ваш код работает в среде, которая поддерживает эту функцию ES2015 или быть transpiled к ES5.

var str = "Sun Aug 28 2016 00:00:00 GMT+0600 (Central Asia Standard Time)"; 
var [day, month, , year] = str.split(' '); 

console.log('day', day); 
console.log('month', month); 
console.log('year', year); 

Destructuring

+1

Спасибо .. Не могли бы вы объяснить («день», день) –

+1

Вот как я называю 'console.log'. Я просто считаю, что легче отслеживать то, что вы смотрите, когда я это делаю. Это личное предпочтение. На самом деле, это, вероятно, имеет смысл просто используйте один «console.log», чтобы проиллюстрировать концепцию, как в ответе Арнаульда. –

2

Вы можете использовать spli()

var my_string = "Sun Aug 28 2016 00:00:00 GMT+0600 (Central Asia Standard Time)"; 
var my_array = my:string.split(' '); 

console.log(my_array[0]); 
.... 
3

Если вы спрашиваете, как разделить строку даты на составные части, вы можете использовать объект даты:

var datestr = "Sun Aug 28 2016 00:00:00 GMT+0600"; 
var date = new Date(Date.parse(datestr)); 
var year = date.getFullYear(); 

Смотрите здесь для списка функций, доступных для объекта даты: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/getYear

Однако, если вы хотите более общий раскол строки, вы хотели бы использовать split, как указано выше выше или регулярное выражение для выделения различных компонентов. Что-то вроде этого:

/(\w+) (\w+) (\d{1,2}) (\d{4})/.exec(datestr); 

Конечно проблема с выше является то, что он предполагает очень специфический формат, который может или не может быть надежным в вашей ситуации.

0

Сделайте объект Date с использованием этой строки даты, затем получите доступ ко всем значениям по свойствам.

var d = new Date(dateString); 
    d.getDate() Returns the day of the month (from 1-31) 
    d.getDay() Returns the day of the week (from 0-6) 
    d.getFullYear() Returns the year 
    d.getHours() Returns the hour (from 0-23) 
    d.getMonth() Returns the month (from 0-11) 
0

Во-первых, создать объект даты из вашей строки даты:

var date = new Date(yourDateString); 

Затем вы можете использовать функции в getDay(), getMonth() и getFullYear(). Они возвратят числа, то есть 0-6 за день, 0-11 за месяц и только год за годом.

Чтобы сказать, месяц в виде строки, а не номер, который вы можете настроить массив:

month[0] = "January"; 
month[1] = "February"; 
month[2] = "March"; 
month[3] = "April"; 
month[4] = "May"; 
month[5] = "June"; 
month[6] = "July"; 
month[7] = "August"; 
month[8] = "September"; 
month[9] = "October"; 
month[10] = "November"; 
month[11] = "December"; 

var month = month[date.getMonth()]; 

Чтобы получить день в виде строки:

weekday[0]= "Sunday"; 
weekday[1] = "Monday"; 
weekday[2] = "Tuesday"; 
weekday[3] = "Wednesday"; 
weekday[4] = "Thursday"; 
weekday[5] = "Friday"; 
weekday[6] = "Saturday"; 

var day = weekday[date.getDay()]; 

К году:

var year = date.getFullYear(); 
+0

FYI, getYear устарел. Вместо этого используйте getFullYear. –

+0

Проблема в том, что эта строка генерируется из плагина календаря jQurey. –

1

Использование ES6 destructuring assignment, вы можете сделать:

[ day, month,, year ] = str.split(' '); 

Пример:

var str = "Sun Aug 28 2016 00:00:00 GMT+0600 (Central Asia Standard Time)", 
 
    day, month, year; 
 

 
[ day, month,, year ] = str.split(' '); 
 

 
console.log('day = ' + day + ', month = ' + month + ', year = ' + year);

+0

Спасибо за такой приятный пример! –

1

Это зависит от того, что вы делаете со значениями после

  1. Вы можете посмотреть в Date Object

    var date = new Date('Sun Aug 28 2016 00:00:00 GMT+0600 (Central Asia Standard Time)'); 
     
    console.log('Day of the week:', date.getDay()); 
     
    console.log('Full year:', date.getFullYear()); 
     
    console.log('Month:', date.getMonth());

    после того, как вы можете преобразовать числовые значения, если необходимо

  2. Или просто разобрать дату строку с регулярным выражением для извлечения строки значения

Смежные вопросы