C# 怎样把 DateTime.Now.Ticks转换为常规日期的形式
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C# 怎样把 DateTime.Now.Ticks转换为常规日期的形式相关的知识,希望对你有一定的参考价值。
如转换成:2010-8-8 12:24:30
1、在新程序界面空白窗口上放置合适的控件:包括,显示操作流程的textbox控件;用于显示用户选择日期内容的3个textbox控件。
2、在【工具箱】中找到【DateTimePicker】,双击加入界面。
3、调整【DateTimePicker】控件的位置。点击【DateTimePicker】控件,在属性中找到【ValueChanged】。
4、双击进入代码编辑界面。
5、生成exe文件进行测试,点击日期控件,显示下列日期菜单可供选择.。
6、选择2014年5月1日,可以看到对应的文本框中和日志中的提示。
7、分别选择其他日期,可以看到选择效果。
参考技术A把 DateTime.Now.Ticks转换为常规日期方法如下:
Int64 NowTimeTicks = DateTime.Now.Ticks / 10000; //获取当前的ticks数,单位ms
//当前的ticks转为时间格式
//当前的ticks转为时间类型
DateTime nowtime = new DateTime(NowTimeTicks*10000 );
//输出指定的时间格式
Console.WriteLine(nowtime.ToString("yyyy-MM-dd HH:mm:ss"));
ticks这个属性值是指从0001年1月1日12:00:00开始到此时的以ticks为单位的时间,就是以ticks表示的时间的间隔数.
使用DateTime.Now.Ticks返回的是一个long型的数值。
扩展资料:
1ticks=100纳秒=0.1微秒
1毫秒=10000ticks
1微秒=1纳秒
1毫秒=1000微秒;
1秒=1000毫秒;
指定的时间转为ticks数:
//从时间控件获取时
DateTime dt = dateTimePicker1.Value;
//输出指定格式
Console.WriteLine(dt.ToString("yyyy-MM-dd HH:mm:ss"));
//输出ms数
Console.WriteLine(dt.Ticks/10000);
参考技术B 日期型数据,在 C# 中的参与运算的时候,应该也是转换为长整型数据来运算的。它的长整型值是自 0001 年 1 月 1 日午夜 12:00 以来所经过时间以 100 毫微秒为间隔表示时的数字。这个数在 C# 的 DateTime 中被称为 Ticks(刻度)。DateTime 类型有一个名为 Ticks 的长整型只读属性,就保存着这个值。如此,要从一个 DataTime 型数据得到 long 型值就非常简单了,只需要读出 DataTime 对象的 Ticks 值即可,如:long longDate = DateTime.Now.Ticks;
DateTime 的构造函数中也提供了相应的,从长整型数据构造 DateTime 型数据的函数:DateTime(long)。如:
DateTime theDate = new DateTime(longDate); 参考技术C DateTime.Now.Ticks 是指从DateTime.MinValue之后过了多少时间,10000000为一秒,保存在long类型的变量里,可以将它传到datetime的构造函数内转成时间类型。
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace ConsoleApplication26
class Program
static void Main(string[] args)
long ticks = DateTime.Now.Ticks;
DateTime now = new DateTime(ticks);
Console.WriteLine(now.ToString("yyyy-MM-dd hh:mm:ss"));
Console.ReadLine();
本回答被提问者采纳
如何使用 C# 生成随机并唯一的数字?
咨询区
Christian Peut
我的项目中需要生成若干个并且唯一的随机数,我用的是 System.Random
,种子给的是 DateTime.Now.Ticks
,参考如下代码:
private void NewNumber()
Random a = new Random(DateTime.Now.Ticks.GetHashCode());
MyNumber = a.Next(0, 10);
当我多次调用 NewNumber()
方法时,我发现会经常出现重复的值,一些朋友说是因为每次都 new 了一下 Random
所致,建议提取出来,代码如下:
public Random a = new Random(DateTime.Now.Ticks.GetHashCode());
private void NewNumber()
MyNumber = a.Next(0, 10);
虽然随机性达到了,但我发现还是会存在 重复
的情况,请问是否有更好的解决方法。
回答区
tsme86
如果你仅仅是需要在 0-9
之间做 随机唯一
的话,我建议你用 洗牌策略
来打乱数组元素即可,参考如下代码:
static void Main(string[] args)
var nums = Enumerable.Range(0, 10).ToArray();
var rnd = new Random();
// Shuffle the array
for (int i = 0; i < nums.Length; ++i)
int randomIndex = rnd.Next(nums.Length);
int temp = nums[randomIndex];
nums[randomIndex] = nums[i];
nums[i] = temp;
// Now your array is randomized and you can simply print them in order
for (int i = 0; i < nums.Length; ++i)
Console.WriteLine(nums[i]);
JOSEFtw
如果你的生成范围小,我建议你用 Guid.NewGuid()
来实现随机性,但范围大的话,我不建议使用,因为性能是真的很差,参考代码如下:
static void Main(string[] args)
var result = Enumerable.Range(0, 9).OrderBy(g => Guid.NewGuid()).ToArray();
for (int i = 0; i < result.Length; ++i)
Console.WriteLine(result[i]);
Vasily Novsky
我是借用 HashSet
来找到 N 个随机并唯一的数字,道理很简单,HashSet
本身就可以保证数字的唯一性,参考如下代码:
using System;
using System.Collections.Generic;
namespace ConsoleApplication1
class RnDHash
static void Main()
HashSet<int> rndIndexes = new HashSet<int>();
Random rng = new Random();
int maxNumber;
Console.Write("Please input Max number: ");
maxNumber = int.Parse(Console.ReadLine());
int iter = 0;
while (rndIndexes.Count != maxNumber)
int index = rng.Next(maxNumber);
rndIndexes.Add(index);
iter++;
Console.WriteLine("Random numbers were found in 0 iterations: ", iter);
foreach (int num in rndIndexes)
Console.WriteLine(num);
Console.ReadKey();
点评区
从时间复杂度以及条件允许的情况下,我觉得 洗牌策略
是一个好方案,其次是 HashSet,最后是 Guid.NewGuid(),这题目相信能给大家提供好的思路。
以上是关于C# 怎样把 DateTime.Now.Ticks转换为常规日期的形式的主要内容,如果未能解决你的问题,请参考以下文章
使用 DateTime.Now.Ticks 生成唯一的数字 ID
我可以获得与 DateTime.Now.Ticks 等效的 VBA 吗?