洪星的博客(原创版,新闻除外)

信息技术 软件开发 电信 移动通信(欢迎和我交流:QQ219402,15152399197)

  博客园 :: 首页 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::
  12 随笔 :: 0 文章 :: 62 评论 :: 0 引用

2010年3月14日 #

BUG:在 ToString("u") 方法中,当 DateTime 的 Kind 属性为 Local 时,不能自动转换为 UTC 时间,而导致返回的末尾跟“Z”的字符串表示为本地时间,末尾跟“Z”的字符串应当表示为 UTC 时间

当 DateTime 的 Kind 属性为 Utc 时,则正常。

 

GB/T 7408-2005《数据元和交换格式 信息交换 日期和时间表示法》摘要:

5.1.2 标志符所用的字符
[Z] 协调世界时(UTC)标志符,直接跟在一数据元后面(没有间隔),用协调世界时表示该日的时间。

 

DateTime
1 DateTime n = DateTime.Now;
2 Console.WriteLine(n);//2010/3/15 14:07:41
3  Console.WriteLine(n.Kind);//Local
4  Console.WriteLine();
5
6  string s = n.ToString("u");
7 Console.WriteLine(s);//2010-03-15 14:07:41Z
8  DateTime t = DateTime.Parse(s);
9 Console.WriteLine(t);//2010/3/15 22:07:41
10  Console.WriteLine(t.Kind);//Local
11  Console.WriteLine();
12
13 string ss = n.ToString("o");
14 Console.WriteLine(ss);//2010-03-15T14:07:41.8178047+08:00
15 DateTime tt = DateTime.Parse(ss);
16 Console.WriteLine(tt);//2010/3/15 14:07:41
17 Console.WriteLine(tt.Kind);//Local

 

ToString("u") 后,末尾跟“Z”的字符串表示为本地时间

Parse 时,认为末尾跟“Z”的字符串表示为 UTC 时间

同一类中,不同方法中的对同一字符串的时间表示却不同!

其他格式都可以正常往返(“o”格式可以保留 Kind 属性,不降低精度),只有“u”格式相差8个小时,请问这是微软的 BUG 吗?请高手解答!
 

更多格式:http://hi.baidu.com/hongcing/blog/item/736bb6437b412f1972f05d70.html

posted @ 2010-03-14 20:20 洪星 阅读(2475) 评论(22) 编辑

2010年2月27日 #

代码
1 //可以通过比较 NetworkInterface 的 NetworkInterfaceType 筛选不需要的内容
2  NetworkInterface[] nis = NetworkInterface.GetAllNetworkInterfaces();
3 foreach (NetworkInterface ni in nis)
4 {
5 PhysicalAddress pa = ni.GetPhysicalAddress();
6 string mac = pa.ToString();
7 }
8
9 string myHostName = Dns.GetHostName();
10 IPHostEntry ips = Dns.GetHostEntry(myHostName);
11 foreach (IPAddress ip in ips.AddressList)
12 {
13 string ipString = ip.ToString();
14 }
15

 

posted @ 2010-02-27 16:23 洪星 阅读(1600) 评论(5) 编辑

2010年2月11日 #

Microsoft Visual Studio 2010 Ultimate RC ISO 2.25 GB
http://download.microsoft.com/download/7/5/8/7580D7D8-7F31-4358-9761-71033D91AB29/VS2010Ult_RC.iso
CRC: 0xC7D5B8AD
SHA-1: 0x8131CFAA9C48A6396B2717D06AB2DF8B4B8FA734
http://www.microsoft.com/downloads/details.aspx?FamilyID=457bab91-5eb2-4b36-b0f4-d6f34683c62a

 

Microsoft Visual Studio 2010 Premium RC ISO 2.24 GB
http://download.microsoft.com/download/F/A/C/FACBD560-4FE4-45DC-AA7C-6FC6863C75C0/VS2010Prem_RC1.iso
CRC: 0xD71D89C8
SHA-1: 0xC92286CBF16026109FFDE08827C4043CF21DC883
http://www.microsoft.com/downloads/details.aspx?FamilyID=301c97f3-aecf-42ca-966a-b8d7304f40b0

 

Microsoft Visual Studio 2010 Professional RC ISO 2.16 GB
http://download.microsoft.com/download/F/0/E/F0E3EC2C-29AF-44B0-AEA6-0E34270DB16A/VS2010Pro_RC.iso
CRC: 0x28397CC3
SHA-1: 0xC37CE6E0D6FA16C24A297B8D8FF703A176B6A542
http://www.microsoft.com/downloads/details.aspx?FamilyID=f9c0b89b-4964-4906-94c6-60ad8a429690

posted @ 2010-02-11 10:22 洪星 阅读(2451) 评论(12) 编辑

2010年2月10日 #

由于 .NET 4.0 使用新版本的 CLR,变化也不少,

例如:

mscoree.dll 变为 mscoree.dll 和 mscoreei.dll,

mscorwks.dll 变为 clr.dll,

mscorjit.dll 变为 clrjit.dll。

这导致在没有安装 .NET 2.0 的情况下,.NET 2.0 程序默认无法在 .NET 4.0 环境下运行(未安装 .NET 2.0/3.0/3.5)。(纠正:不是文件名的变化导致无法运行,而是微软的新策略是强烈建议程序在开发时使用的运行时版本下运行,这样可以保证最大的兼容性

那么怎么办呢?

Visual Studio 2010 对项目可以设置“目标框架”,在没有安装 .NET 3.5 的情况下可以选择 .NET Framework 4、.NET Framework 4 Client Profile,在改变选择之后,会生成一个配置文件,内容如下:

 

<?xml version="1.0"?>
<configuration>
<startup>
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.0"/>
</startup>
</configuration>

把这个文件名改成你需要运行的程序的配置名,同时把程序与配置文件放到一起,这个时候就可以打开 .NET 2.0 的程序了。

 

以上只是我当时想出此方法的思路,当然你没有必要这样做。

你只要搞一个配置文件或者将以上配置文件内容添加到已有的配置文件中。

 

supportedRuntime version="v4.0" 强制当前程序在 CLR 4.0 环境下运行,当然你可以设置 1.0、1.1、2.0,前提是运行环境内有对于版本的运行时。(第二次纠正:如果强制在 CLR 2.0 下运行,必须设置 supportedRuntime version="v2.0.50727",如果设置 v2.0 无效。)

 

顺便说明目前的运行时版本只有 1.0、1.1、2.0、4.0,没有3.0、3.5。

 

实际上仅对 Windows XP 需要这样做,因为 XP 默认情况下没有安装任何 .NET 版本,Windows Vista/7 默认情况下分别安装了 .NET 3.0、.NET 3.5,具有 CLR 2.0。

以上做法可能会有兼容性问题,大型复杂程序不推荐这样做。小工具或者自行编写的程序(例如我)可以这样做,出了问题自行解决。这样在 XP 下,就不用安装 N 个 .NET 版本

本文没有说明的内容,可以自行摸索。

posted @ 2010-02-10 00:09 洪星 阅读(3980) 评论(5) 编辑

2010年2月9日 #

代码中使用了 C# 3.0 语法

效果是一个红色矩形从右下角移动到左上角

仅仅是示例,演示如何在代码中动态创建动画

 

MainPage.xaml
<UserControl x:Class="Hongcing.Silverlight.Create_And_Run_Animation"
xmlns
="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x
="http://schemas.microsoft.com/winfx/2006/xaml">
<Canvas Loaded="LayoutRoot_Loaded" />
</UserControl>

 

MainPage.xaml.cs
1 using System;
2  using System.Windows;
3  using System.Windows.Controls;
4  using System.Windows.Media;
5 using System.Windows.Media.Animation;
6 using System.Windows.Shapes;
7
8 namespace Hongcing.Silverlight
9 {
10 public partial class Create_And_Run_Animation : UserControl
11 {
12 public Create_And_Run_Animation()
13 {
14 InitializeComponent();
15 }
16
17 private void LayoutRoot_Loaded(object sender, RoutedEventArgs e)
18 {
19 var redRectangle = new Rectangle
20 {
21 Width = 300,
22 Height = 200,
23 Fill = new SolidColorBrush(Colors.Red),
24 Stroke = new SolidColorBrush(Colors.Black)
25 };
26
27 (sender as Panel).Children.Add(redRectangle);
28
29 var leftAnimation = new DoubleAnimation
30 {
31 Duration = new Duration(TimeSpan.FromSeconds(5)),
32 From = 700,
33 To = 0
34 };
35
36 var topAnimation = new DoubleAnimation
37 {
38 Duration = leftAnimation.Duration,
39 From = 350,
40 To = 0
41 };
42
43 Storyboard.SetTarget(leftAnimation, redRectangle);
44 Storyboard.SetTarget(topAnimation, redRectangle);
45
46 //属性路径也可以用 new PropertyPath("(Canvas.Left)")、new PropertyPath("(Canvas.Top)")
47 Storyboard.SetTargetProperty(leftAnimation, new PropertyPath(Canvas.LeftProperty));
48 Storyboard.SetTargetProperty(topAnimation, new PropertyPath(Canvas.TopProperty));
49
50 //此处没有添加到资源中,而是直接启动动画。
51 new Storyboard { Children = { leftAnimation, topAnimation } }.Begin();
52 }
53 }
54 }
55

 

posted @ 2010-02-09 20:11 洪星 阅读(1704) 评论(7) 编辑

2010年2月5日 #

摘要: 今天看到苏飞的“一个拖动无标题栏窗体的方法 修正”,突然想起多年前的劳动成果,贴出来。适用于有标题栏和无标题栏窗体,适用于窗体内控件,当然 Form 也不例外,只要能添加 MouseDown、MouseMove 事件,无需添加 MouseUp 事件,也无需考虑 Form 是否有标题栏。本方法采用 Control.MousePosition,而没有采用 MouseEventA...阅读全文
posted @ 2010-02-05 14:55 洪星 阅读(2064) 评论(2) 编辑

2010年2月3日 #

摘要: 代码Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/-->//如果是文本,先转换为字节序列,如果有汉字,请不要使用 ASCII 编码,会导致汉字变成问号byte[] buffer = Encoding.UTF8.GetBytes("洪星的博客");//UTF...阅读全文
posted @ 2010-02-03 13:54 洪星 阅读(444) 评论(0) 编辑

2010年2月2日 #

摘要: 上一篇说了 Silverlight 中的中文字体,现在来说说 Windows 中的中文字体。在默认情况下,也就是未自行安装新字体或者 Office 等文字处理软件的情况下,Windows 默认提供下列字体:Windows 95/98/98SE 宋体、黑体、楷体_GB2312、仿宋_GB2312Windows XP/2000/2003/ME/NT 宋体/新宋体、黑体、楷体_GB2312、仿宋_GB2...阅读全文
posted @ 2010-02-02 21:39 洪星 阅读(788) 评论(0) 编辑

摘要: 先贴代码、后贴图,相信不需要说太多。此文只能解决静态文本显示问题,至于动态文本,看完这篇文章,再加上自己的摸索,相信你能想出来。当然如有不明白可以和我交流。同时说明我也是初学者,学习时间按天计算。MainPage.xamlCode highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighte...阅读全文
posted @ 2010-02-02 17:49 洪星 阅读(1441) 评论(5) 编辑

2010年2月1日 #

摘要: 谁还有更简单的请留言!部分代码方便调试,未精简。VerifyIdCard.csCode highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/--> 1 using System; 2 using System.Text.RegularExpressions; 3 4 n...阅读全文
posted @ 2010-02-01 22:09 洪星 阅读(537) 评论(2) 编辑