我有一个脚本用于在某些日期添加或减去天数。
例如,如果我的日期是10/08/2012而且我做了+5则应该返回15/08/2012
如果我们是月末,它应该在下个月返回。
实际上这个脚本似乎很好,但事情是日期格式。它返回类似时间戳的东西,我真的不知道如何格式化它,因为javascript对我来说不是那么容易我试图找到像php date('d-m-y', strtotime($row['date'])
这样的东西
但是我找不到javascript的等价物。
首先,这里是我过去所有日期的代码。
<?php $jours=d ate( 'Y-m-d'); $sql="SELECT * FROM agenda WHERE n_doss='"
.mysql_real_escape_string($_GET[ 'n_doss']). "' AND qualite='".mysql_real_escape_string($_GET[
'qualite']). "' AND liasse='".$_GET[ 'liasse']. "'"; $qry=m ysql_query($sql) or
die(__LINE__.mysql_error().$sql); $i=- 1; // index des enregistrements
?>
<form action="<?php echo (isset($_POST['go'])) ? 'go2.php' : '#'; ?>"
method="post">
<input type="hidden" name="liasse" value="<?php echo $_GET['liasse']; ?>"
/>
<input type="hidden" name="n_doss" value="<?php echo $_GET['n_doss']; ?>"
/>
<table id="box-table-a">
<tr>
<th scope="col">
<input name="data[<?php echo ++$i; ?>][code_s]" type="text" value="CODE S"
size="10">
</th>
<th scope="col">
<input name="data[<?php echo $i; ?>][libelle]" type="text" value="LIBELLE"
size="30">
</th>
<th scope="col">
<input name="data[<?php echo $i; ?>][action]" type="text" value="ACTION"
size="15">
</th>
<th scope="col">
<input name="data[<?php echo $i; ?>][libelle]" type="text" value="DESCRIPTION"
size="40">
</th>
<th scope="col">
<input type="text" name="data[<?php echo $i; ?>][date]" value="DATE D'ACTION"
size="12">
</th>
<th scope="col">
<input type="text" name="data[<?php echo $i; ?>][date]" value="VALIDATION"
size="12">
</th>
<th scope="col"><strong>ETAT</strong>
</th>
</tr>
<?php while($row=m ysql_fetch_assoc($qry)): ?>
<tr>
<td>
<input name="data[<?php echo ++$i; ?>][code_s]" type="text" value="<?php echo $row['code_s'];?>"
size="10">
</td>
<td>
<input name="data[<?php echo $i; ?>][libelle]" type="text" value="<?php echo $row['libelle']; ?>"
size="30">
</td>
<td>
<input name="data[<?php echo $i; ?>][action]" type="text" value="<?php echo $row['action']; ?>"
size="15">
</td>
<td>
<input name="data[<?php echo $i; ?>][libelle]" type="text" value="<?php echo $row['description']; ?>"
size="40">
</td>
<td>
<input type="text" name="data[<?php echo $i; ?>][date]" class="date" id="date<?php echo $i; ?>"
value="<?php
echo date('d-m-Y',strtotime($row['date_action'])) ;
?>" size="12">
</td>
<td nowrap>
<input type="text" name="data[<?php echo $i; ?>][date_validation]" id="data[<?php echo $i; ?>][date_validation]"
value="<?php if($row['date_validation']=='0000-00-00') {echo 'Non traité' ; }
else {
echo (date('d-m-Y',strtotime($row['date_validation']))); }
?>" size="12">
</td>
<td nowrap>
<?php if($row[ 'date_validation']=='0000-00-00' AND strtotime($row[
'date_action'])>strtotime(date('Y-m-d'))) {?><a href="edit-action.php?id=<?php echo $row['id'] ; ?>&n_doss=<?php echo $row['n_doss'] ; ?>&liasse=<?php echo $_GET['liasse'] ?>&qualite=<?php echo $_GET['qualite'] ?>"><img src="images/gtk-edit.png" width="24" height="24"></a>
<a
href="validate-action.php?id=<?php echo $row['id'] ; ?>&n_doss=<?php echo $row['n_doss'] ; ?>&liasse=<?php echo $_GET['liasse'] ?>&qualite=<?php echo $_GET['qualite'] ?>">
<img src="images/go.gif" width="24" height="24">
</a> <a href="delete-action.php?id=<?php echo $row['id'] ; ?>&n_doss=<?php echo $row['n_doss'] ; ?>&liasse=<?php echo $_GET['liasse'] ?>"
onClick="return confirm('voulez vous vraiment supprimer cette action ?')"><img src="images/trash-paper.png" width="24" height="24"></a>
<?php
} elseif($row[ 'date_validation']=='0000-00-00' AND strtotime($row[
'date_action'])<=strtotime(date( 'Y-m-d'))) {?><a href="#" onClick="return confirm('Vous ne pouvez pas éditer ou changer la date d\'une action appartenant à votre passif !')"><img src="images/gtk-edit.png" width="24" height="24"></a>
<a
href="validate-action.php?id=<?php echo $row['id'] ; ?>&n_doss=<?php echo $row['n_doss'] ; ?>&liasse=<?php echo $_GET['liasse'] ?>&qualite=<?php echo $_GET['qualite'] ?>">
<img src="images/go.gif" width="24" height="24">
</a> <a href="#" onClick="return confirm('Vous ne pouvez pas supprimer une action appartenant à votre passif !')"><img src="images/trash-paper.png" width="24" height="24"></a>
<?php
} else { ?>
<img src="images/tick_48.png" width="24" height="24">
<?php } ?>
</td>
</tr>
<?php endwhile; ?>
</td>
</tr>
</table>
这是我用来添加天数的表格(减去天数的表格没有完成,因为我在添加天数时遇到了一些麻烦。
<table width="50%">
<tr>
<td>
<div class="info"> <strong>Décalage des date </strong>
<table width="150" border="0" cellspacing="0"
cellpadding="0">
<tr>
<td align="center" bgcolor="#FFFF99">
<input type="image" src="images/minus_remove_green.png" width="22" height="22"
name="submit" value="moins" />
<input name="jours" type="text" value="" size="5" id="nb" />
<input type="image" src="images/plus_add_green.png" width="22" height="22"
onClick="addday()" />
</td>
</tr>
</table>Ajouter une action <a href="add-action.php?n_doss=<?php echo $_GET['n_doss'] ; ?>&liasse=<?php echo $_GET['liasse'] ?>&qualite=<?php echo $_GET['qualite'] ; ?>"><img src="images/plus.png" width="24" height="24" border="0"></a>
</div>
</td>
</tr>
</table>
最后我有这个javascript我已经完成了:
<script type="text/javascript">
function addday() {
var items = new Array();
var itemCount = document.getElementsByClassName("date");
for (var i = 0; i < itemCount.length; i++) {
items[i] = document.getElementById("date" + (i + 1)).value;
}
for (var i = 0; i < itemCount.length; i++) {
items[i] = document.getElementById("date" + (i + 1)).value;
var itemDtParts = items[i].split("-");
var itemDt = new Date(itemDtParts[2], itemDtParts[1] - 1, itemDtParts[0]);
nb = document.getElementById('nb').value;
var newDate = itemDt.getDate() + nb;
itemDt.setDate(newDate ) ;
itemCount[i].value = itemDt;
}
return items;
}
</script>
问题在于,它不会返回好日期,而是返回一些奇怪的东西。
2013年4月29日星期一00:00:00 GMT + 0200(巴黎,马德里(heured'été))
我不知道如何返回像dd-mm-yyyy那样的格式
我真的迷路了。
我试过这样做来格式化itemCount [i] .value = itemDt.format(“dd-mm-yyyy”);
但它会返回错误,指出date.format
对于数据对象或类似的东西是不可接受的。
答案 0 :(得分:2)
如果你想返回一个带有自定义格式的漂亮字符串,你可能会更好地手工完成:
.getDate()
查找当月的日期。.getMonth()
查找月份编号。.getFullYear()
查找包含4位数的年份。现在,您声明itemDt = new Date(...)
这很好,但是您需要做的就是这样:
itemDt.setDate(itemDt.getDate()+5)
Date对象将自行处理月/年。
您可以使用以前声明的函数来格式化字符串,如下所示:
return itemDt.getDate()+"/"+itemDt.getMonth()+"/"+itemDt.getFullYear() // 15/08/2012
编辑:
上面的代码将返回15/8/2012
而不填充零。
return (new Array(2 + 1 - itemDt.getDate().toString().length)).join('0') + itemDt.getDate() + "/" + (new Array(2 + 1 - itemDt.getMonth().toString().length)).join('0') + itemDt.getMonth() + "/" +itemDt.getFullYear();
// returns zero padded dates 09/07/2012