在本文中,我们将给您介绍关于是否有一个标准的DateTimestring表示forms作为Windows文件名有效,并且可以使用DateTime.Parse进行分析?的详细内容,此外,我们还将为您提供
在本文中,我们将给您介绍关于是否有一个标准的DateTimestring表示forms作为Windows文件名有效,并且可以使用DateTime.Parse进行分析?的详细内容,此外,我们还将为您提供关于.net – DateTime.Parse在XP vs Windows 7/8上有所不同、.net – Windows XP上的DateTime.ToLocalTime、.net – 为什么Windows服务不能与System.Timers.Timer或System.Windows.Forms.Timer一起正常工作、android – 格式化DateUtils.getRelativeDateTimeString的知识。
本文目录一览:- 是否有一个标准的DateTimestring表示forms作为Windows文件名有效,并且可以使用DateTime.Parse进行分析?
- .net – DateTime.Parse在XP vs Windows 7/8上有所不同
- .net – Windows XP上的DateTime.ToLocalTime
- .net – 为什么Windows服务不能与System.Timers.Timer或System.Windows.Forms.Timer一起正常工作
- android – 格式化DateUtils.getRelativeDateTimeString
是否有一个标准的DateTimestring表示forms作为Windows文件名有效,并且可以使用DateTime.Parse进行分析?
作为一个简单的备份过程的一部分,我想保存文件的名称,指出备份的date和时间。 现在我正在使用yyyyMMddTHHmmss ,即“20100601T115720”。 我希望能够parsing这些date,以便清理比特定date更早的文件。 (备份date时间不必与文件创builddate相同。)最终在Powershell中运行,使用如下所示的行:
Get-ChildItem $backupDirectory -filter *.bak | where { [System.DateTime]::ParseExact([System.IO.Path]::GetFileNameWithoutExtension($_),"yyyyMMddTHHmmss",[System.Globalization.CultureInfo]::InvariantCulture) -lt $oldestDate }
请注意我目前使用DateTime.ParseExact方法。 这很好,所以我想我的问题是更多的学术,但我想知道是否有一个“标准的”Windows文件名格式:
包括date和时间信息AND
可以使用标准的DateTime.Parseparsing
.net方法模仿windows默认的文件重命名行为
我可以使用单声道的AOTfunction本地“预编译”.NET DLL / EXE,使他们更难以逆向工程?
所有用户都可以在同一台电脑上写入文件夹
Windows服务应用程序挂起
我应该使用Visual Studio中哪种types的项目来创build“隐藏”工具?
如何为xbuild添加缺less的程序集引用? (单声道/ Linux)的
以C#.Netforms托pipe进程会禁用某些进程的button
使用DownloadStringAsync下载HTML源代码不会在WP8上下载整个源代码
是否有可能使用WCF与Windows内核模式软件进行通信?
为什么在Vista / 7中,RequestAdditionalTime()方法不能重新启动?
这不是“标准”文件名格式。
我通常使用yyyy-MM-dd,HH-mm-ss ,这比一个数字块更可读。
我没有找到标准的文件名格式,但是这个技巧往往会使PowerShell输出一个本地化的可读日期/时间(即2010年2月2日上午8时15分14秒):
(Get-Date | Out-String).Trim().Replace(":","-")
将Get-Date配置为Out-String将使用默认格式化程序(在本例中为当前语言环境中的时间)使日期成为可读的字符串。 修剪()从两端删除额外的换行符。 由于我知道的语言环境的时间字符串中唯一的非法字符是':',所以我简单地用' – '替换':'
这是最明显的比使用.NET的字符串格式慢一个档次。 如果你想使用相同的技巧而不使用cmdlet,你可以这样写:
$date = [DateTime]::Now ($date.ToLongDateString() + " " + $date.ToLongTimeString()).Replace(":",'-')
希望这可以帮助
.net – DateTime.Parse在XP vs Windows 7/8上有所不同
Console.WriteLine(String.Format("DateTime.Parse on Client: {0}",DateTime.Parse("1998-10-31T00:00:00-04:00")));
.NET4
在XP下,这将返回:10/31/1998 12:00:00 AM
在Windows 7 / Windows 8下,它返回:10/30/1998 11:00:00 PM
.NET2
在XP下,它将返回:10/31/1998 12:00:00 AM
为什么??!?
从字符串中删除TimeZone(-04:00)会导致.NET4下的XP和Windows 7上的值相同.当从字符串执行DateTime.Parse时,Windows XP似乎在.NET4下以不同的方式应用时区偏移量.有没有办法改变这种行为,以便它在.NET4下是一致的,无论操作系统如何(不涉及操纵发送到DateTime.Parse的字符串)
环境:
所有计算机都安装了最新的修补程序(可通过Windows Update获得),并配置为“东部时间”,并在“时区设置”中选中“自动调整夏令时的时钟”.
我已在使用.NET4的Windows 7计算机和使用.NET4.5的Windows 7计算机上确认了此行为
解决方法
您的日期的UTC偏移为-4,使其位于美国东部时区附近.最相关的夏令时规则改变了2005年能源政策法案,该法案将DST从3月的第2个星期日到11月的第1个星期日生效,从2007年开始生效.因此了解当地时间1998年10月31日要求知道这项法律尚未生效.
这就是差异的来源. Windows Vista是第一个拥有这些DST更改数据库的Windows版本,.NET 4是第一个开始使用它的.NET版本. XP没有该数据库,因此.NET无法做任何事情,只是假设当前的DST规则生效.
这是您在与当地时间合作时需要处理的不可避免的损失.不要,使用UTC.
.net – Windows XP上的DateTime.ToLocalTime
On Windows XP systems,the ToLocalTime
method recognizes only the current
adjustment rule when converting from
UTC to local time. As a result,
conversions for periods before the
current adjustment rule came into
effect may not accurately reflect the
difference between UTC and local time.
我正在开发Windows 7,但部署到混合环境.如何提供与ToLocalTime的Windows 7行为相匹配的一致,正确的实现?
编辑
我跑了一个测试:
static void Main() { // 8 AM in July,UTC. That would have been DST,so 3 AM CDT. var dstDate = new DateTime(2010,7,1,8,DateTimeKind.Utc); // 8 AM in December,UTC. Not DST,so 2 AM CST. var nonDstDate = new DateTime(2010,12,DateTimeKind.Utc); Log("DST Date ToLocalTime: " + dstDate.ToLocalTime()); Log("DST Date ConvertTimeFromUtc: " + ConvertTimeFromUtc(dstDate)); Log("Expected: 3 AM July 1 2010"); Log(string.Empty); Log("Non-DST Date ToLocalTime: " + nonDstDate.ToLocalTime()); Log("Non-DST Date ConvertTimeFromUtc: " + ConvertTimeFromUtc(nonDstDate)); Log("Expected: 2 AM December 1 2010"); Log(string.Empty); Log("Date ToLocalTime Kind: " + dstDate.ToLocalTime().Kind); Log("Date ConvertTimeFromUtc Kind: " + ConvertTimeFromUtc(dstDate).Kind); } private static void Log(string message) { Console.WriteLine(message); } private static DateTime ConvertTimeFromUtc(DateTime utcDateTime) { return DateTime.SpecifyKind( TimeZoneInfo.ConvertTimeFromUtc( utcDateTime,TimeZoneInfo.FindSystemTimeZoneById(TimeZoneInfo.Local.Id)),DateTimeKind.Local); }
XP Pro 32位,SP3(作为VM)和Windows 7 Enterprise 64位的结果相同:
DST Date ToLocalTime: 7/1/2010 3:00:00 AM DST Date ConvertTimeFromUtc: 7/1/2010 3:00:00 AM Expected: 3 AM July 1 2010 Non-DST Date ToLocalTime: 12/1/2010 2:00:00 AM Non-DST Date ConvertTimeFromUtc: 12/1/2010 2:00:00 AM Expected: 2 AM December 1 2010 Date ToLocalTime Kind: Local Date ConvertTimeFromUtc Kind: Local
文档错了吗?我可以简单地拨打ToLocalTime吗?
编辑2
我们在一个真正的XP系统(不是VM)上运行它,并在那里得到相同的结果.我的测试用例是否正确?任何人都可以提供结果会有所不同的情况吗?
解决方法
On Windows XP systems,the ToLocalTime
method recognizes only the current
adjustment rule when converting from
UTC to local time. As a result,
conversions for periods before the
current adjustment rule came into
effect may not accurately reflect the
difference between UTC and local time.
美国在2007年改变了夏令时的调整规则.
> 2006年:4月的第一个星期日,10月的最后一个星期日结束.
> 2007年:3月的第2个星期日,11月的第1个星期日结束.
问题在于他们遵循2007年所有日期的规则,而不仅仅是2007年之后的日期.DST规则在20年内没有改变,Windows XP在不同年份没有不同规则的概念.它将考虑2006年10月31日的夏令时,但实际上并非如此.
如果你只处理2007年之后的日期,那么你很好,不需要做任何特别的事情.如果您正在处理2006年或之前的日期,那么您需要检查年份,并手动应用DST偏移.
.net – 为什么Windows服务不能与System.Timers.Timer或System.Windows.Forms.Timer一起正常工作
我的第一种方法是使用System.Windows.Forms.Timer及其Tick事件.我选择了它,因为我正在阅读的教程.不知怎的,我无法使服务工作.它安装并启动没有问题,但它不会触发事件(我将调试器附加到进程并看到它没有被触发).我认为在Windows服务中使用Forms计时器可能不是一个好主意,因此我决定切换到System.Timers.Timer并利用其Elapsed事件.这也不起作用.我在Windows窗体应用程序中尝试了两种提到的方法,但它们都有效.
经过一番挖掘后,我发现这个网站:http://weblogs.asp.net/sibrahim/archive/2004/01/13/58429.aspx,博主建议使用另一个计时器:System.Threading.Timer.我第三次改变了这种方法,BOOM开始像魅力一样工作.
我的问题是:为什么我不能在Windows服务中使用其他计时器,为什么找到有关它的信息这么困难?
System.Timers.Timer是一个基于服务器的计时器,并在您创建它的线程上引发一个事件(我认为).如果这不起作用,也许你没有启动计时器或计时器在一个立即结束的线程上运行(因为,没有任何东西保持线程活着,所以它完成).
http://msdn.microsoft.com/en-us/library/system.timers.timer.aspx
System.Threading.Timer计时器使用在ThreadPool线程上运行的回调,并且根本不依赖于消息泵,因此这有效.
当您在WinForms项目中运行Application.Run(myForm)时,该调用也会运行消息泵,这将管理UI消息.您提到的Windows计时器是一个UI组件,并期望消息泵运行,以便在UI线程上发生tick事件.
看看这里在Windows服务中运行消息泵:
Message pump in .NET Windows service
进一步阅读:
http://support.microsoft.com/kb/842793
总之,我只是使用System.Threading.Timer类.
android – 格式化DateUtils.getRelativeDateTimeString
DateUtils.getRelativeDateTimeString(context,due,DateUtils.MINUTE_IN_MILLIS,DateUtils.WEEK_IN_MILLIS,0)
这是输出格式化的字符串
in 23 hours,6:18am
我对android documentation这个方法不太了解.
有没有一个内置的方式来剥离时间或更改逗号更多的句子像?
“23小时”或“上午6时18分23时30分”优于目前的产出.
谢谢.
解决方法
DateUtils.getRelativeTimeSpanString(due,Now,DateUtils.SECOND_IN_MILLIS)
今天关于是否有一个标准的DateTimestring表示forms作为Windows文件名有效,并且可以使用DateTime.Parse进行分析?的讲解已经结束,谢谢您的阅读,如果想了解更多关于.net – DateTime.Parse在XP vs Windows 7/8上有所不同、.net – Windows XP上的DateTime.ToLocalTime、.net – 为什么Windows服务不能与System.Timers.Timer或System.Windows.Forms.Timer一起正常工作、android – 格式化DateUtils.getRelativeDateTimeString的相关知识,请在本站搜索。
本文标签: