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

jQuery日期格式显示异常:Firefox下仍显示MM-dd-yyyy而非MM/dd/yyyy

解决Firefox中日期格式显示异常的问题

看起来你遇到的问题根源其实不是浏览器检测失效,而是ASP.NET Razor的日期格式化逻辑在搞鬼!我帮你拆解一下:

问题核心

在.NET的日期格式字符串里,/是一个特殊符号——它代表当前服务器文化设置中的「日期分隔符」,而不是字面意义上的斜杠。如果你的服务器默认文化(比如非en-US的文化)用-作为日期分隔符,那哪怕你写了ToString("MM/dd/yyyy"),最终输出的还是MM-dd-yyyy格式,这就导致不管你的浏览器检测逻辑对不对,Firefox拿到的都是带横杠的日期。

解决方案

这里给你几个靠谱的解决办法,按优先级排序:

1. 转义斜杠,让它成为普通字符

在格式字符串里用单引号把/包起来,告诉.NET不要把它当成文化相关的分隔符:

$(function () {
    var isFirefox = typeof InstallTrigger !== 'undefined';
    if (isFirefox) {
        $('#DateOfBooking').val('@DateTime.Now.ToString(@"MM'/'dd'/'yyyy")');
    } else {
        $('#DateOfBooking').val('@DateTime.Now.ToString("MM-dd-yyyy")');
    }
});

2. 指定不变文化(InvariantCulture)格式化

直接指定用不变文化来解析格式字符串,它的日期分隔符固定是/:

$(function () {
    var isFirefox = typeof InstallTrigger !== 'undefined';
    if (isFirefox) {
        $('#DateOfBooking').val('@DateTime.Now.ToString("MM/dd/yyyy", System.Globalization.CultureInfo.InvariantCulture)');
    } else {
        $('#DateOfBooking').val('@DateTime.Now.ToString("MM-dd-yyyy")');
    }
});

3. 优化浏览器检测逻辑(可选)

顺便提一句:新版Firefox已经移除了InstallTrigger这个API,所以原来的检测逻辑可能已经失效了。如果需要更可靠的浏览器检测,可以换成:

const isFirefox = navigator.userAgent.includes('Firefox') || navigator.userAgent.includes('Gecko/');

不过更推荐的是尽量避免浏览器检测,可以考虑前端统一处理日期格式化,或者后端根据请求头的Accept-Language来返回对应格式,这样更健壮。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 07:08:34