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

iOS WebView显示经典ASP页面时间格式异常的修正方式咨询

嗨,这个问题其实两种路子都能走——要么在经典ASP这边提前把日期转成标准的字符串格式,要么在iOS的WebView里做格式修正。我给你详细拆解下两种方案的实现步骤:

方案一:在经典ASP端转换日期格式

这种方案的好处是所有客户端(包括iOS)都能拿到统一的标准格式,不用每个端单独写适配逻辑,推荐优先考虑。

首先我们要先确认fpx_sellerTxnTime是ASP能识别的有效日期值(比如常见的YYYY-MM-DD HH:MM:SS、MM/DD/YYYY这类格式),然后用ASP的日期函数来拼接成你要的DD-MM-YYYY HH:MM:SS格式,还要注意给个位数的日、月、时、分、秒补零:

<% 
fpx_sellerTxnTime = request.Form("fpx_sellerTxnTime")
Dim txnDate, formattedDate

' 先判断是否为有效日期,避免转换出错
If IsDate(fpx_sellerTxnTime) Then
    txnDate = CDate(fpx_sellerTxnTime)
    ' 拼接成目标格式,Right("0" & 数值, 2)用来补零
    formattedDate = Right("0" & Day(txnDate), 2) & "-" & _
                   Right("0" & Month(txnDate), 2) & "-" & _
                   Year(txnDate) & " " & _
                   Right("0" & Hour(txnDate), 2) & ":" & _
                   Right("0" & Minute(txnDate), 2) & ":" & _
                   Right("0" & Second(txnDate), 2)
Else
    ' 如果不是有效日期,可选择保留原字符串或提示错误
    formattedDate = fpx_sellerTxnTime
End If
%>

之后你在页面里直接输出<%= formattedDate %>就可以了,这样iOS WebView拿到的就是标准格式的日期字符串,直接显示即可。

方案二:在iOS端WebView中修正格式

如果后端代码不方便修改,也可以在iOS端处理。这里有两种常见方式:

方式1:通过JavaScript注入修改页面内容

在WebView加载完成后,注入JS代码找到显示日期的元素,解析并重新格式化日期:

Swift 示例

func webViewDidFinishLoad(_ webView: UIWebView) {
    // 假设页面上显示日期的元素id是"txn-time"
    let formatScript = """
        let timeElement = document.getElementById('txn-time');
        if (timeElement) {
            const originalStr = timeElement.textContent.trim();
            const date = new Date(originalStr);
            if (!isNaN(date.getTime())) {
                // JS月份从0开始,所以要+1
                const day = String(date.getDate()).padStart(2, '0');
                const month = String(date.getMonth() + 1).padStart(2, '0');
                const year = date.getFullYear();
                const hours = String(date.getHours()).padStart(2, '0');
                const minutes = String(date.getMinutes()).padStart(2, '0');
                const seconds = String(date.getSeconds()).padStart(2, '0');
                timeElement.textContent = `${day}-${month}-${year} ${hours}:${minutes}:${seconds}`;
            }
        }
    """
    webView.stringByEvaluatingJavaScript(from: formatScript)
}

方式2:在原生代码中处理日期字符串

如果WebView是通过接口拿到日期字符串(而非直接渲染页面),可以在Swift/OC里直接解析并格式化:

Swift 示例

// 假设原日期字符串是"2024/05/20 14:30:00"这类格式
func formatTransactionTime(_ originalTime: String) -> String {
    let dateFormatter = DateFormatter()
    // 设置原日期的格式,根据实际传入的格式调整
    dateFormatter.dateFormat = "yyyy/MM/dd HH:mm:ss"
    if let date = dateFormatter.date(from: originalTime) {
        dateFormatter.dateFormat = "dd-MM-yyyy HH:mm:ss"
        return dateFormatter.string(from: date)
    }
    // 解析失败则返回原字符串
    return originalTime
}

注意

如果原日期字符串是JS/原生Date无法直接解析的特殊格式,你需要先按分隔符拆分字符串,再重新拼接成目标格式。


内容的提问来源于stack exchange,提问作者Hanz Cheah

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 04:06:00