javascript格式化日期格式

标签 javascript date format

我有一个脚本,用于为某些日期增加或减少天数。

例如,如果我有一个日期是 10/08/2012 我执行 +5 它应该返回 15/08/2012

如果我们是月底,它应该在下个月返回。

其实这个脚本貌似不错,问题是日期格式。它返回类似时间戳的东西,我真的不知道如何格式化它,因为 javascript 对我来说不是那么容易我试图找到在 php date('d-m-y', strtotime ($行['日期']) 但是我没有找到 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&eacute;' ; }
 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 &eacute;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'] ?>&amp;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(巴黎、马德里(时间))

我不知道如何返回像 dd-mm-yyyy 这样的格式

我真的迷路了。

我尝试这样做来格式化 itemCount[i].value = itemDt.format("dd-mm-yyyy");

但它会返回错误,指出 date.format 对于数据对象或类似的东西是 Not Acceptable 。

最佳答案

如果你想返回一个自定义格式的漂亮字符串,你最好手动完成:

  • 使用 .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

关于javascript格式化日期格式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12191517/

相关文章:

javascript - 为什么 document.forms 不返回 firebug 控制台中的所有表单?

php - 选择某个月份位于两个日期字段之间的 MySQL 行

c++ - 输出所需的列数

Python pandas 数据帧输出格式

javascript - 如何同时使用多个 Bootstrap 4 显示类切换内容显示

javascript - 从 Firefox 附加组件中选择性 URL 重写?

Java 在 HH :MM:SS 中减去 2 持续时间

Python 完全对齐字符串

javascript - 在 Windows 10 Edge 浏览器中使用 javascript 检测自定义 url 协议(protocol)处理程序

php - 查找日期范围与指定日期范围相交的行