zoukankan      html  css  js  c++  java
  • 日期格式在不同环境的显示问题

    下表显示可用于创建用户定义的日期/时间格式的字符,这些格式字符区分大小写。

    d 将日显示为不带前导零的数字(如 1)。如果这是用户定义的数字格式中的唯一字符,请使用 %d
    dd 将日显示为带前导零的数字(如 01)。
    ddd 将日显示为缩写形式(例如 Sun)。
    dddd 将日显示为全名(例如 Sunday)。
    M 将月份显示为不带前导零的数字(如一月表示为 1)。如果这是用户定义的数字格式中的唯一字符,请使用 %M
    MM 将月份显示为带前导零的数字(例如 01/12/01)。
    MMM 将月份显示为缩写形式(例如 Jan)。
    MMMM 将月份显示为完整月份名(例如 January
    gg 显示时代/纪元字符串(例如 A.D.)
    h 使用 12 小时制将小时显示为不带前导零的数字(例如 1:15:15 PM)。如果这是用户定义的数字格式中的唯一字符,请使用 %h
    hh 使用 12 小时制将小时显示为带前导零的数字(例如 01:15:15 PM)。
    H 使用 24 小时制将小时显示为不带前导零的数字(例如 1:15:15)。如果这是用户定义的数字格式中的唯一字符,请使用 %H
    HH 使用 24 小时制将小时显示为带前导零的数字(例如 01:15:15)。
    m 将分钟显示为不带前导零的数字(例如 12:1:15)。如果这是用户定义的数字格式中的唯一字符,请使用 %m
    mm 将分钟显示为带前导零的数字(例如 12:01:15)。
    s 将秒显示为不带前导零的数字(例如 12:15:5)。如果这是用户定义的数字格式中的唯一字符,请使用 %s
    ss 将秒显示为带前导零的数字(例如 12:15:05)。
    F 显示秒的小数部分。例如,ff 将精确显示到百分之一秒,而 ffff 将精确显示到万分之一秒。用户定义格式中最多可使用七个 f 符号。如果这是用户定义的数字格式中的唯一字符,请使用 %f
    T 使用 12 小时制,并对中午之前的任一小时显示大写的 A,对中午到 11:59 P.M 之间的任一小时显示大写的 P。如果这是用户定义的数字格式中的唯一字符,请使用 %t
    tt 使用 12 小时制,并对中午之前任一小时显示大写的 AM;对中午到 11:59 P.M 之间的任一小时显示大写的 PM
    y 将年份 (0-9) 显示为不带前导零的数字。如果这是用户定义的数字格式中的唯一字符,请使用 %y
    yy 以带前导零的两位数字格式显示年份(如果适用)。
    yyy 以四位数字格式显示年份。
    yyyy 以四位数字格式显示年份。
    z 显示不带前导零的时区偏移量(如 -8)。如果这是用户定义的数字格式中的唯一字符,请使用 %z
    zz 显示带前导零的时区偏移量(例如 -08)
    zzz 显示完整的时区偏移量(例如 -08:00)

     实例 :

    实例
     1 //Console.WriteLine(DateTime.Now.ToString("M/d/yy"));
     2             //Console.WriteLine(DateTime.Now.ToString("MM/dd/yyyy"));
     3             //Console.WriteLine(DateTime.Now.ToString("d-MMM"));
     4             //Console.WriteLine(DateTime.Now.ToString("d-MMMM-y"));
     5             //Console.WriteLine(DateTime.Now.ToString("d MMMM"));
     6             //Console.WriteLine(DateTime.Now.ToString("MMMM yy"));
     7             //Console.WriteLine(DateTime.Now.ToString("hh:mm tt"));
     8             //Console.WriteLine(DateTime.Now.ToString("hh:mm:ss t"));
     9             //Console.WriteLine(DateTime.Now.ToString("HH:mm:ss"));
    10             //Console.WriteLine(DateTime.Now.ToString("M/d/yyyy H:mm"));

    显示结果如下图

    不同的环境可能显示不同,原因是文化(CultureInfo)的差别 ,

    文化CultureInfo

    例子:

    例子
     1             //Thread.CurrentThread.CurrentCulture = new CultureInfo("en-US");
     2 
     3             //Console.WriteLine(DateTime.Now.ToString("M/d/yy"));
     4             //Console.WriteLine(DateTime.Now.ToString("MM/dd/yyyy"));
     5             //Console.WriteLine(DateTime.Now.ToString("d-MMM"));
     6             //Console.WriteLine(DateTime.Now.ToString("d-MMMM-y"));
     7             //Console.WriteLine(DateTime.Now.ToString("d MMMM"));
     8             //Console.WriteLine(DateTime.Now.ToString("MMMM yy"));
     9             //Console.WriteLine(DateTime.Now.ToString("hh:mm tt"));
    10             //Console.WriteLine(DateTime.Now.ToString("hh:mm:ss t"));
    11             //Console.WriteLine(DateTime.Now.ToString("HH:mm:ss"));
    12             //Console.WriteLine(DateTime.Now.ToString("M/d/yyyy H:mm"));

    这段例子,在不同的环境上,显示结果都是一致的。

    或者在web.config中加上

    <system.web>
    <globalization culture="en-US" uiCulture="en-US"></globalization>

    </system.web>

    延伸

    例子:

    延伸例子
     1  class Program
     2     {
     3         static Random random = new Random();
     4         static void Main(string[] args)
     5         {
     6         
     7             if (Thread.CurrentThread.CurrentCulture.Name != "fr-FR")
     8             {
     9                 Thread.CurrentThread.CurrentCulture = new CultureInfo("fr-FR");
    10                 Thread.CurrentThread.CurrentUICulture = new CultureInfo("fr-FR");
    11             }
    12             else
    13             {
    14                 Thread.CurrentThread.CurrentCulture = new CultureInfo("en-US");
    15                 Thread.CurrentThread.CurrentUICulture = new CultureInfo("en-US");
    16             }
    17             Proc();
    18             Thread writer = new Thread(Proc);
    19             writer.Name = "New Thread!";
    20             writer.Start();
    21         }
    22         static void DisplayThreadInfo()
    23         {
    24             Console.WriteLine("\n Current Thread Name:'{0}'", Thread.CurrentThread.Name);
    25             Console.WriteLine("\n Current Thread Culture/UI Cultrue:{0}/{1}", Thread.CurrentThread.CurrentCulture, Thread.CurrentThread.CurrentUICulture);
    26         }
    27         static void DisplayData()
    28         {
    29             Console.WriteLine(" Some Current values:");
    30             for (int i = 0; i < 3; i++)
    31             {
    32                 Console.WriteLine("{0:C2}", random.Next() * 10);
    33             }
    34         }
    35         static void Proc()
    36         {
    37             DisplayThreadInfo();
    38             DisplayData();
    39         }
    40     }

    在新应用程序线程启动时,其当前区域性和当前的UI区域性定义的由当前系统区域性并不是由当前线程区域性。 下面的示例演示差异。 它将当前区域性和应用程序线程的当前用户界面区域性设置为法语(法国)区域性(fr FR)。 如果当前区域性已fr FR,该示例将其设置为英语(美国)区域性(en-us)。 它显示了三个随机数,货币值然后创建一个新线程,然后,显示三个随机数为货币值。 但,如该示例输出所示,新线程显示的货币值不反映法语(法国)区域性的格式设置约定不同,从主应用程序线程的输出。

  • 相关阅读:
    u-boot分析(九)----nand flash初始化|nand flash读写分析
    u-boot分析(八)----串口初始化
    u-boot分析(七)----内存初始化
    u-boot分析(六)----时钟初始化
    u-boot分析(五)----I/D cache失效|关闭MMU和cache|关闭看门狗
    u-boot分析(四)---设置异常向量表|设置SVC模式
    u-boot分析(二)----工作流程分析
    u-boot剖析(一)----Makefile分析
    Arm启动流程解析
    卷积神经网络中感受野的介绍
  • 原文地址:https://www.cnblogs.com/hfliyi/p/2671719.html
Copyright © 2011-2022 走看看