2013-09-02 2 views
0

Я пытаюсь выяснить, как передать дату в формате yyyy-mm-dd через JS, что я делал в PHP раньше, но PHP и JS отличаются в этом смысле. Я немного теряю.PHP date formating in JS

Вот как я сделал это в PHP:

var default_dob = strtotime(date('m/d/Y', time()) .' -18 year'); 
var dob = date('m/d/Y', default_dob); 

по существу выведя дату сегодняшнюю, вычитая 18 лет, и переформатирование поэтому его mm/dd/yyyy для выбора даты. Идеализм Я бы хотел не добавлять в другой плагин к моему уже большому стеку JS. Так что, если я могу сделать это без лишнего веса (за пределами возможности подключить его к возможно готовой функции Ill be happy)

+0

См этот сайт [http://phpjs.org/functions/date/](http://phpjs. орг/функция/дата /) – coolprarun

ответ

0

Результат strtotime - это отметка времени UNIX, которую вы можете передать объекту JavaScript Date. Объект Дата предполагает миллисекунды (не секунды), так как UNIX эпохи так умножить это число на 1000. В одной строке, вы можете:

var dob = new Date("<?php echo strtotime('-18 year'); ?>" * 1000); 

Затем отформатируйте эту дату:

var dateString = dob.getFullYear() + '-' + (dob.getMonth() + 1) + '-' + dob.getDate(); 

Или для форматирования даты с ведущими нулями:

var dateString = dob.getFullYear() + '-' + ("00" + (dob.getMonth() + 1)).slice(-2) + '-' + ("00" + dob.getDate()).slice(-2); 

раствор в основном, PHP является использование date фу чтобы отформатировать дату:

var dateString = "<?php $ts = strtotime('whatever'); echo date('Y-m-d', $ts); ?>"; 
1

Это будет предупреждать о дате в требуемом формате ровно 18 лет назад.

var date = new Date(); 
date.setFullYear(date.getFullYear() - 18); 
alert(date.getFullYear() + '/' + (date.getMonth() + 1) + '/' + date.getDate()); 
0
// Left pad a string to the specified length using the specified character 
function padLeft(str, length, char) 
{ 
    // Make sure args really are strings and that the length is a positive 
    // number. If you don't do this concatenation may do numeric addition! 
    str = String(str); 
    char = String(char) || ' '; // default to space for pad string 
    length = Math.abs(Number(length)); 
    if (isNaN(length)) { 
     throw new Error("Pad length must be a number"); 
    } 

    if (str.length < length) { 
     // Prepend char until the string is long enough 
     while (str.length < length) { 
      str = char + str; 
     } 

     // Make sure the string is the requested length 
     return str.slice(length * -1); 
    } else { 
     // The string is already long enough, return it 
     return str; 
    } 
} 

// Get the current date/time 
// This is local to the browser, so it depends on the user's system time 
var default_dob = new Date(); 

// Subtract 18 years 
default_dob.setFullYear(default_dob.getFullYear() - 18); 

// Format the string as you want it. PHP's d and m formats add leading zeros 
// if necessary, in JS you have to do it manually. 
var dob = padLeft(default_dob.getMonth(), 2, '0') + '/' 
     + padLeft(default_dob.getDate(), 2, '0') + '/' 
     + default_dob.getFullYear() 

Смотрите также: MDN entry on the Date() object

0

Попробуйте

<script type="text/javascript"> 
$ss= date('m/d/Y', strtotime('+18 year')); 
?> 
var default_dob = '<?php echo $ss;?>'; 
alert(default_dob); 
</script>