日期未解码用于排序(因此用作字符串)与数据表时刻与区域设置

时间:2016-06-03 13:56:36

标签: javascript datatables momentjs

我正在尝试使用本地法语的Datatable的时刻插件。并且它不起作用,日期字段不是作为日期排序而是作为字符串排序。 我在javaconsole中看到的是,在Datatable的fnSort函数中,aoData中每个元素的aSortData仍然是“17février201610:02:29”,而不是转换为相关的整数。 我首先尝试使用不同的javascript文件,然后使用网络版本,但在两种情况下都失败了。

这是我的javascript代码

<script src="./my_files/jquery-1.11.1.js" type="text/javascript"></script>
<script type="text/javascript" charset="utf8" src="http://cdn.datatables.net/1.10.12/js/jquery.dataTables.js"></script>
<script type="text/javascript" charset="utf8" src="http://cdnjs.cloudflare.com/ajax/libs/moment.js/2.8.4/moment-with-locales.min.js"></script>
<script type="text/javascript" charset="utf8" src="http://cdn.datatables.net/plug-ins/1.10.11/sorting/datetime-moment.js"></script>

<script type="text/javascript">
    $(document).ready( function () {
        $.fn.dataTable.moment( 'D MMMM YYYY hh:mm:ss', 'fr');
        $('#data-table-logs').DataTable();  
    }); 
</script>

以下是我表格中的数据示例。

<tbody>

    <tr>
        <td>17 février 2016 10:02:29</td>
        <td>5111</td>
        <td>Jeromrm ghhh</td>
        <td>Entrant</td>
    </tr>

    <tr>
        <td>10 février 2016 12:02:10</td>
        <td>5111</td>
        <td>Jeromrm ghhh</td>
        <td>Entrant</td>
    </tr>

    <tr>
        <td>27 janvier 2016 16:01:17</td>
        <td>5111</td>
        <td>Jeromrm ghhh</td>
        <td>Entrant</td>
    </tr>


    <tr>
        <td>19 mai 2016 16:05:53</td>
        <td>5411</td>
        <td>jdsn Reference</td>
        <td>Sortant</td>
    </tr>

    <tr>
        <td>30 mars 2016 14:03:06</td>
        <td>5111</td>
        <td>Jeromrm ghhh</td>
        <td>Sortant</td>
    </tr>

    <tr>
        <td>14 mars 2016 12:03:27</td>
        <td>5111</td>
        <td>Jeromrm ghhh</td>
        <td>Sortant</td>
    </tr>

在我看来,我完全按照https://datatables.net/blog/2014-12-18的程序进行了操作,只不过我已经使用了当地时刻而不是时刻。

有人对此有所了解吗?

这是完整的HTML

<meta http-equiv="X-UA-Compatible" content="IE=edge">
    <title>My Site</title>


    <script src="http://code.jquery.com/jquery-1.11.1.js" type="text/javascript"></script>
    <link rel="stylesheet" type="text/css" href="http://cdn.datatables.net/1.10.12/css/jquery.dataTables.css">
    <script type="text/javascript" charset="utf8" src="http://cdn.datatables.net/1.10.12/js/jquery.dataTables.js"></script>
    <script type="text/javascript" charset="utf8" src="http://cdnjs.cloudflare.com/ajax/libs/moment.js/2.8.4/moment-with-locales.min.js"></script>
    <script type="text/javascript" charset="utf8" src="http://cdn.datatables.net/plug-ins/1.10.11/sorting/datetime-moment.js"></script>

    <script type="text/javascript">
        $(document).ready( function () {
            $.fn.dataTable.moment( 'D MMMM YYYY hh:mm:ss', 'fr');
            $('#data-table-logs').DataTable();  
        }); 
    </script>
</head>
<body class="">
    <div class="container">
        <div class="main-content">   
            <div class="row">
                <div id="main-content-block" class="col-xs-12">

                    <div>
                        <table class="display" id="data-table-logs">
                            <thead>
                                <tr>
                                    <th>Durée de l'appel</th>
                                    <th>Autre partie</th>
                                    <th>Nom</th>
                                    <th>Type d'appel</th>
                                </tr>
                            </thead>
                            <tbody>
                                <tr>
                                    <td>17 février 2016 10:02:29</td>
                                    <td>5111</td>
                                    <td>Jeromrm ghhh</td>
                                    <td>Entrant</td>
                                </tr>
                                <tr>
                                    <td>10 février 2016 12:02:10</td>
                                    <td>5111</td>
                                    <td>Jeromrm ghhh</td>
                                    <td>Entrant</td>
                                </tr>
                                <tr>
                                    <td>27 janvier 2016 16:01:17</td>
                                    <td>5111</td>
                                    <td>Jeromrm ghhh</td>
                                    <td>Entrant</td>
                                </tr>
                                <tr>
                                    <td>19 mai 2016 16:05:53</td>
                                    <td>5411</td>
                                    <td>jdsn Reference</td>
                                    <td>Sortant</td>
                                </tr>
                                <tr>
                                    <td>30 mars 2016 14:03:06</td>
                                    <td>5111</td>
                                    <td>Jeromrm ghhh</td>
                                    <td>Sortant</td>
                                </tr>
                                <tr>
                                    <td>14 mars 2016 12:03:27</td>
                                    <td>5111</td>
                                    <td>Jeromrm ghhh</td>
                                    <td>Sortant</td>
                                </tr>
                                <tr>
                                    <td>19 février 2016 18:02:31</td>
                                    <td>5111</td>
                                    <td>Jeromrm ghhh</td>
                                    <td>Sortant</td>
                                </tr>
                            </tbody>
                        </table>
                    </div>
                </div>
            </div>
        </div>
    </div>
</body>

提前感谢, 奥利弗

1 个答案:

答案 0 :(得分:0)

为此,所有值都必须通过提供的格式进行解析。你犯了一个简单的错误,就是你有public class FactoryMethod { @Factory(dataProvider="dataSuite") public Object[] createInstances(int id, String TestSuite) { return new Object[] {new FactoryMethodClass(id, TestSuite)}; } @DataProvider(name="dataSuite") public static Object[][] dataSuite() { Object[][] dataArray = {{1, "TEST SUITE 1"},{2, "TEST SUITE 2"}}; return dataArray; } } public class FactoryMethodClass { private static int SHAREDcounter = 1000; private int id = 100; private String TestSuite = ""; public FactoryMethodClass(){} public FactoryMethodClass(int id, String TestSuite) {this.id = id; this.TestSuite = TestSuite;} @DataProvider(name="dataRecords") public static Object[][] dataPro() { Object[][] dataArray = {{1, "TEST RECORD 1"}, {2, "TEST RECORD 2"}, {3, "TEST RECORD 3"}}; return dataArray; } @Test (dataProvider="dataRecords") public void firstDataPro(int id, String TestRecord) { System.out.println("Running Test Record " + TestRecord + " of Test Suite " + TestSuite + " with Value = " + SHAREDcounter++); Assert.assertTrue(true); } } (12小时制的小时)而不是hh(24小时制的小时)。由于数据包含大于12的小时数,因此它不匹配,因此整个列被视为字符串。

只需更改脚本:

HH

要:

$.fn.dataTable.moment( 'D MMMM YYYY hh:mm:ss', 'fr');

另请参阅working jsFiddle here