`

关于日期显示格式字符串的一点理解

阅读更多

http://www.cnblogs.com/longsan/archive/2006/04/05/367462.html

今天有网友在q群上贴了如下一段代码:

strings=Calendar1.TodaysDate.ToString("d");

想得到"MM/dd/yyyy"的显示方式,可是总是显示成"04-01-2006",而不是想要的"04/01/2006"。

一开始我也想当然的认为"MM/dd/yyyy" (自定义格式字符串)或者用"d"
(标准格式字符串)来完成,但是经过实验,发现总是显示"04-01-2006"。后来查了帮助,对这个问题有了下面的一些认识:

1、标准格式字符串的显示是与程序运行机器上的本地区域有关的,即与CultrueInfo相关。比如你的机器上的本地区域设置里,设置日期之间的间隔符是"-",那么你通过上述代码显示的总是"-",除非你修改了本地区域的设置。

2、上述代码默认的美国英语的显示方式是"04/01/2006",中文的显示方式是"04-01-2006",德语的显示方式是"04.01.2006"。

3、如果不通过修改本地区域的设置,而想实现"04/01/2006"的显示方式,则应该使用自定义格式字符串,上面的代码可以写成下面这样:

strings=Calendar1.TodaysDate.ToString("MM'/'dd'/'yyyy");


其中两个单引号括着的是任意字符串,在显示时都会直接显示。

几种解决方案:

第一种如上面3所说的。

第二种

Web.Config中,添加:

<globalization requestEncoding="utf-8" responseEncoding="utf-8"culture="zh-CN"/>

这是最方便的,但是没有试.

第三种

控制面板-〉区域选项-〉自定义(时间右边的按钮)

可以,不过没有移植性.

关于一些资料参考:

日期格式化显示
在SQL中DateTime为8位长度日期的指定形式为2003-12-31 00:00:00
而在ASP.NET上最常用的只是2003-12-31号一部分而已你可以使用
DateTime.Now.ToString("d")或DateTime.Now.ToShortDateString();
不过具体格式是2003/12/31还是2003-12-31的话要看你的系统配置日期配置是哪一种.
你要想确定取得2003-12-31指定的话使用.Tostring()用户自定义格式
格式的字符可以看上面说到的文档.
如.ToString("yyyy-MM-dd")返回2003-11-25
.ToString("yyyyMMdd")返回20031125

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)

同样对时间也可以进行这样的格式化..你可以使用自定义格式来设置你想要的格式输出.
你可以使用上表中各字符进行任意的组合不管前后次序多少如你写入yyyy-yyyy也是可以的.

注意的是:进行格式化的一定要是日期DateTime格式.在SQL中的类型也一样.否则格式无效或出错.特别是在DataGrid常{0:IFromat}的格式中会用到

2)日期的输入
我们在办理入日期格式式常用DateTime.Pares()
但是这个形式的转换是相当有限的,有些C#是会不懂你写入的日期格式的如20031231大家都明白是2003-

12-31号可以C#不认识他.我们可以这样子进行如下
//设置语言国家
System.IFormatProvider format=new System.Globalization.CultureInfo("zh-CN",true);
//指定转换格式
Response.Write(DateTime.ParseExact(this.TextBox1.Text,"yyyyMMdd",format));
这样他就能看出20031231号的日期格式了

不过可惜他只能够对yyyyMMdd形式进行不能对其它格式进行转换是不是美中不足?
不过.NET提供了另一种重载版本.
public static DateTime ParseExact(string, string[], IFormatProvider, DateTimeStyles);
可对指定的几种日期格式进行转换.

分享到:
评论

相关推荐

    js(javascript) 日期控件

    2. **格式化日期**:JS没有内置的日期格式化函数,但可以通过组合使用`Date`对象的方法和字符串模板来实现。例如,`new Date().toLocaleString()`会返回本地时间的字符串表示,而自定义格式化可能需要使用`...

    matlab开发-日期时间戳绘图

    MATLAB中的`datetime`函数可以做到这一点,它能够解析多种格式的日期字符串。在转换后,我们可以使用`datetick`或`datestr`函数来控制日期的显示格式,使其符合我们期望的样子。 接下来,`text`函数将用于在图形上...

    flex api 4.0 中文帮助文档

    有时候需要将其他类型的对象转换为字符串,这部分介绍了如何使用`toString()`方法来实现这一点。 **2.5 连接字符串** 字符串的连接也是常用的操作之一,这部分介绍了如何使用`+`运算符或`concat()`方法来连接多个...

    PyF:Haskell QuasiQuoter用于字符串格式化

    `PyF`支持多种格式化选项,如对数值的精度控制、日期时间格式化、字符串插值等。它还提供了一种方式来避免常见的安全问题,比如SQL注入,因为所有的变量插入都在编译时完成,而不是在运行时动态构建字符串。 在实际...

    js日期控件集合js日期控件集合

    `toString()`方法会根据浏览器的本地设置返回日期字符串,而`Intl.DateTimeFormat`则允许开发者自定义日期和时间的显示格式。 4. **事件处理** 日期控件通常与JavaScript事件紧密关联,如`change`、`focus`、`blur...

    Oracle中的日期类型的用法

    ### Oracle中的日期类型详解 ...以上内容详细介绍了Oracle数据库中日期类型的基本用法、数据存储方式、显示格式以及插入和查询时的注意事项,旨在帮助初学者快速掌握Oracle日期处理的关键概念,避免常见的错误和陷阱。

    javascript格式化指定日期对象的方法

    由于在格式化为易读的日期字符串时,年、月、日和时、分、秒之间通常会插入某些分隔符,比如破折号和冒号,因此需要在拼接字符串时注意这一点。 上述代码中的函数`formatDate(dateObj)`正是一个格式化的示例,它会...

    AAA.rar_cupbpi_时间格式

    然而,描述中的"2011081844321"这种格式并不是标准的TDateTime表示,而是自定义的字符串格式。 这个自定义格式可能是“YYYYMMDDHHMMSS”的变体,其中: - 前8位(20110818)代表日期,从公元2011年8月18日开始; - ...

    javascript经典特效---特殊字码显示.rar

    7. **国际化与本地化**:如果涉及到多种语言的特殊字码,可能需要用到JavaScript的国际化API,如`Intl`对象,它提供了日期、数字和字符串格式化的功能,支持多种语言。 在这个压缩包中,"特殊字码显示.htm"很可能是...

    Oracle 日期时间格式化不准的问题, hh24:mi:ss 才是正确的写法

    当我们需要将这个值转换为字符串以便于显示或存储时,通常会使用`TO_CHAR`函数配合特定的日期时间格式模型。然而,不正确的格式模型可能导致混淆和错误的结果。 在描述中提到的问题是关于分钟(minute)和月份...

    以24小时格式获取系统日期和时间

    在FormatDateTime函数中,我们可以使用"HH:mm:ss"作为格式字符串来实现这一点: ```vb Dim time24HourFormat As String = FormatDateTime(Now, DateFormat.LongTime) ``` 在这里,DateFormat.LongTime会默认包含AM/...

    JS简单获取及显示当前时间的方法

    如示例代码所示,通过一系列的判断和拼接,最终得到一个标准的时间格式字符串,并通过`document.write()`方法输出。 除此之外,文章还提供了一些与JavaScript时间和日期操作相关的扩展工具和资源。例如,Unix时间戳...

    JS日期控件

    JavaScript没有内置的日期格式化函数,但可以通过字符串模板或第三方库如`moment.js`来实现。例如,可以使用`getFullYear()`, `getMonth() + 1`, `getDate()`组合成形如"YYYY-MM-DD"的格式。 3. **事件处理**:在...

    DateTimePicker源码.zip

    格式化的逻辑可能涉及到Windows API函数如GetTimeFormat、GetDateFormat等,这些函数用于将日期和时间转换为用户友好的字符串。 对于高级开发者,可能会想要自定义DateTimePicker的行为。源码分析可以帮助你实现这...

    时钟 vb实验 大学实验

    5. **格式化字符串**:获取的时间通常为DateTime类型,需要将其转换为适合显示的字符串格式。Format函数或者DateTime.ToString方法可以做到这一点。例如,`Format(Now, "hh:mm:ss")`将返回小时、分钟和秒的字符串...

    js获得当前系统日期时间的方法

    上述代码定义了一个`formatDate`函数,它接受一个Date对象作为参数,并返回一个格式化的日期时间字符串。这在需要将日期和时间显示给用户时非常有用。 ### JavaScript日期时间的注意点 在处理JavaScript的日期和...

    易语言仿酷狗制作歌词

    这涉及到字符串处理和时间格式转换的知识,易语言提供了丰富的字符串函数和日期时间操作函数来实现这一点。 其次,"处理歌词"意味着我们需要管理歌词文件的加载、解析和存储。歌词文件通常是LRC格式,包含多行时间...

    基于汇编语言的七段电子表显示.pdf

    Display宏用于显示字符串,而Moveshape函数负责显示七段码电子表,这两个功能都是通过调用DOS中断09H来完成的。 在VS2019中编译汇编程序,我们需要安装MASM32 SDK,它包含汇编语言开发所需的所有工具和库。同时,...

    自动星期计算

    为了显示中文的星期名称,还需要将这些数字映射到对应的中文字符串。 自动算最大日期是指找到给定范围内最晚的日期。这可以通过比较两个日期对象来实现,或者使用特定的日期库函数,如Python的dateutil库中的rrule...

    覆盖时间戳_给图像添加时间戳_

    2. 时间戳格式化:将时间值转换为可读的日期和时间字符串。 3. 颜色管理:确保时间戳与背景的反色效果。 4. 字体大小调整:根据图像尺寸动态设置字体大小。 5. 图像绘制:在图像上绘制时间戳文本,注意位置和样式。 ...

Global site tag (gtag.js) - Google Analytics