【问题标题】:How to get client machine date format?如何获取客户端机器日期格式?
【发布时间】:2019-09-25 13:31:23
【问题描述】:

我想获取客户端机器日期格式,我的应用程序托管在美国机器上。

托管服务器日期格式:MM/dd/yyyy 本地(客户端)机器日期格式:dd/MM/yyyy

我想得到 dd/MM/yyyy 格式,这是客户端机器的格式。

我使用了以下代码,但它返回服务器日期格式(MM/dd/yyyy),但我想要客户端机器日期格式(本地)。

DateTimeFormatInfo info = new DateTimeFormatInfo
{
    ShortDatePattern = CultureInfo.CurrentCulture.DateTimeFormat.ShortDatePattern
};

谁能告诉我如何获取客户端机器日期格式(dd/MM/yyyy)?

【问题讨论】:

  • 我认为用户本地机器的日期格式对你不可用,除非你的代码在他们的机器上运行,或者你让那个客户向你发送他们的文化信息,我猜
  • CultureInfo.CreateSpecificCulture(Request.UserLanguages(0)).DateTimeFormat.ShortDatePattern?
  • 如果您知道两种(初始和所需的)格式,那么ParseExact 并使用ToString() 重新格式化:string result = DateTime.ParseExact(source, initialFormat, CultureInfo.CurrentCulture).ToString(desiredFormat);
  • @AhmedAbdelhameed 假设,一个Request

标签: c# asp.net-mvc date


【解决方案1】:

在 MVC asp.net 中:

首先将Thread.CurrentThread.CurrentCulture = new System.Globalization.CultureInfo(Request.UserLanguages.FirstOrDefault());放入Application_BeginRequest

如果您没有Application_BeginRequest。请在您的项目中点击Global.asax

在 MvcApplication 类中添加新功能

protected void Application_BeginRequest() {

Thread.CurrentThread.CurrentCulture = new System.Globalization.CultureInfo(Request.UserLanguages.FirstOrDefault()); }

现在,您可以在客户端机器上使用 DateTime.Now 格式

【讨论】:

    【解决方案2】:

    用于检索客户端日期格式。我认为 java-script 将是最好的选择

    试试下面的代码。我希望它会有所帮助。

    getDateFormat(){
        // initialize date value "31st January 2019"
        var my_date = new Date(2019,0,31);
        console.log(my_date.toLocaleDateString());
        // Initialize variables
        var separator="";
        var first="";
        var second="";
        var third="";
        var date_parts = [];
    
        // get separator : "-", "/" or " ", format based on toLocaleDateString function        
        if (my_date.toLocaleDateString().split("-").length==3){
            separator = " - ";
            date_parts = my_date.toLocaleDateString().split("-");
        } 
        if (my_date.toLocaleDateString().split("/").length == 3) {
            separator = " / ";
            date_parts = my_date.toLocaleDateString().split("/");
        } 
        if (my_date.toLocaleDateString().split(" ").length == 3) {
            separator = " ";
            date_parts = my_date.toLocaleDateString().split(" ");
        } 
    
        // get first part        
        if (date_parts[0]==2019){
            first ="yyyy";
        } else if (date_parts[0] == 31){
            first = "dd";
        } else{
            if (date_parts[0].length<=2){
                first ="mm";
            }
            else{
                first="mmm";
            }
        }
    
        // get second part        
        if (date_parts[1] == 2019) {
            second = "yyyy";
        } else if (date_parts[1] == 31) {
            second = "dd";
        } else {
            if (date_parts[1].length <= 2) {
                second = "mm";
            }
            else {
                second = "mmm";
            }
        }
    
        // get third part        
        if (date_parts[2] == 2019) {
            third = "yyyy";
        } else if (date_parts[2] == 31) {
            third = "dd";
        } else {
            if (date_parts[2].length <= 2) {
                third = "mm";
            }
            else {
                third = "mmm";
            }
        }
    
        // assembly
        var format = first + separator + second + separator + third;
        console.log(format);
        return format;
    }
    

    【讨论】:

    • 您如何建议我们从 C# 运行 Javascript?
    • 是的,我可以使用 javascript 获取它,但试图找到一种从服务器端获取它的方法。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-10-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-01-04
    相关资源
    最近更新 更多