You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在服务端渲染jQuery Datatable时格式化时间戳日期?

Hey Eddie, let's fix that date formatting headache you're dealing with—combining ColdFusion, AJAX, and jQuery DataTables is great, but dates can be tricky. I've got a few proven approaches to get those timestamps looking readable, let's break them down:

Option 1: Format Dates on the ColdFusion Backend (Most Reliable)

Handling dates server-side avoids browser compatibility issues and keeps your formatting consistent across all clients. Here are two ways to do this:

A. Format Directly in Your SQL Query

If you're pulling data with <cfquery>, use MySQL's built-in DATE_FORMAT function to format the date before it even hits ColdFusion:

SELECT
    id,
    DATE_FORMAT(your_date_column, '%m/%d/%Y %h:%i %p') AS readable_date,
    other_field1,
    other_field2
FROM your_table

Adjust the format string (%m/%d/%Y %h:%i %p) to match what you need—%m is two-digit month, %d two-digit day, %Y four-digit year, %h 12-hour hour, %i minutes, %p AM/PM.

B. Format in ColdFusion Before Serializing to JSON

If you prefer to handle it in ColdFusion, loop through your query results and format each date explicitly:

<cfset responseData = []>
<cfloop query="yourQuery">
    <cfset row = {
        "id": yourQuery.id,
        "readableDate": DateFormat(yourQuery.your_date_column, "mm/dd/yyyy") & " " & TimeFormat(yourQuery.your_date_column, "hh:mm tt"),
        "otherField1": yourQuery.other_field1,
        "otherField2": yourQuery.other_field2
    }>
    <cfset ArrayAppend(responseData, row)>
</cfloop>
<!--- Return formatted JSON to AJAX --->
<cfoutput>#SerializeJSON(responseData)#</cfoutput>

If your database returns the date as a string instead of a ColdFusion date object, convert it first with CreateDateTime() or ParseDateTime():

<cfset rawDate = ParseDateTime(yourQuery.your_date_column)>
<cfset formattedDate = DateFormat(rawDate, "mm/dd/yyyy") & " " & TimeFormat(rawDate, "hh:mm tt")>

C. Use ColdFusion's JSON Serialization Settings (CF10+)

ColdFusion lets you define date formats directly when serializing queries to JSON, no loops needed:

<cfset jsonOptions = {
    dateFormat: "mm/dd/yyyy HH:mm:ss",
    timeFormat: "HH:mm:ss",
    serializeQueryByColumns: false
}>
<cfoutput>#SerializeJSON(yourQuery, jsonOptions)#</cfoutput>

This will automatically format all date/time fields in your query to the specified string format.

Option 2: Format Dates in DataTables Frontend

If you can't modify the backend, use DataTables' render option to format dates on the client side. Here's how:

Basic Render for ISO/Timestamp Values

$(document).ready(function() {
    $('#yourDataTable').DataTable({
        ajax: {
            url: 'your_ajax_endpoint.cfm',
            dataSrc: ''
        },
        columns: [
            { data: 'id' },
            {
                data: 'your_date_column',
                render: function(data, type, row) {
                    // Handle Unix timestamps (milliseconds)
                    if (typeof data === 'number') {
                        const date = new Date(data);
                        return date.toLocaleString(); // Uses browser's default format
                    }
                    // Handle date strings (e.g., "2024-05-20T14:30:00.000Z")
                    const date = new Date(data);
                    return `${date.getMonth()+1}/${date.getDate()}/${date.getFullYear()} ${date.toLocaleTimeString([], {hour: '2-digit', minute:'2-digit'})}`;
                }
            },
            { data: 'otherField1' }
        ]
    });
});

Manual Parsing for MySQL Date Strings

If your AJAX returns dates in MySQL's yyyy-mm-dd HH:mm:ss format (which can cause issues in older browsers), parse it manually:

render: function(data, type, row) {
    if (!data) return '';
    const [datePart, timePart] = data.split(' ');
    const [year, month, day] = datePart.split('-');
    const [hour, minute] = timePart.split(':');
    // Months are 0-indexed in JS Date
    const date = new Date(year, month - 1, day, hour, minute);
    return `${month}/${day}/${year} ${hour}:${minute}`;
}

Quick Troubleshooting Tip

If you're still seeing weird date values, check what your AJAX endpoint is returning—use your browser's DevTools > Network tab to inspect the JSON response. Make sure dates are either formatted strings or valid timestamps, not ColdFusion's default serialized date objects (which look like {"date":"2024-05-20T14:30:00.000Z"}). If you see that, use the backend formatting options above to fix it.

内容的提问来源于stack exchange,提问作者Eddie B

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.19 08:52:01