我试着在这里搜索,但它对我帮助不大..
我想将 time_span 转换为字符串,我不想在几天内返回时间跨度......但只有HH:mm:ss.怎么实现呢?
我的示例代码在这里:
String time_span_par = "06:12:40";
String time_str = "18:13:59";
TimeSpan time_span_var = TimeSpan.Parse(time_span_par);
TimeSpan time_span = TimeSpan.Parse(time_str);
time_span = time_span.Add(time_span_var);
string temp = time_span.ToString("HH:mm:ss");
Run Code Online (Sandbox Code Playgroud) 我有一个绑定到模型的输入表单.该模型具有TimeSpan属性,但只有当我输入时间为hh:mm或hh:mm:ss时,它才能正确获取值.我想要的是它捕获值,即使它被写为hhmm或hh.mm或hh.mm.ss或...我想要正确解析许多不同的格式.这可能吗?
谢谢!
以下代码
Console.WriteLine("{0:%h} hours {0:%m} minutes",
new TimeSpan(TimeSpan.TicksPerDay));
Run Code Online (Sandbox Code Playgroud)
产生这个输出:
0小时0分钟
我想要的是这个输出:
24小时0分钟
我在这个格式字符串中缺少什么?
PS我知道我可以手动将TimeSpan分成几天和几小时,并将两者相乘,但宁愿使用自定义格式字符串,因为这些时间跨度显示在silverlight数据网格中,人们期待看到horus,而不是几天.
TimeSpan Earlybeforetime = new TimeSpan();
Earlybeforetime = earlybefore.Subtract(Convert.ToDateTime(outtime);
Run Code Online (Sandbox Code Playgroud)
有时它会返回负值.如何将值转换为始终为正?
WPF 有一个好的时间跨度控制吗?我正在寻找一个看起来像来自 WPF Toolkit 扩展的 Timepicker(小巧紧凑)。我从 codeproject 中看到的示例对于我的 UI 来说太大了。如果没有,我愿意自己创建一个并希望得到建议。谢谢
C#WPF应用程序
我通过使用在启动时显示SplashScreen最少的时间
Thread.Sleep(int); //int = milliseconds to display splash screen
Run Code Online (Sandbox Code Playgroud)
达到该睡眠时间后,代码将恢复,并且SplashScreen将逐渐淡出以关闭
SplashScreen.Close(Timespan.FromMilliseconds(int)); //int = milliseconds fade-out
Run Code Online (Sandbox Code Playgroud)
我想在此时暂停等待SplashScreen变为100%透明并完全关闭,然后继续执行其他任务,IE写入控制台或显示MainWindow.
(TimeSpan.FromMilliseconds(int))完成时是否触发了事件?还有其他建议吗?
namespace StartupSplash
{
public class SplashScreenStartup
{
//IMPORTANT:set image property to Resource and NOT Splash Screen
private SplashScreen Splash = new SplashScreen("Resources/SplashScreen.png");
public void SplashScreenStartUp()
{
Splash.Show(false, true);
Thread.Sleep(3000); // Pause code, display splash screen 3 seconds
Splash.Close(TimeSpan.FromMilliseconds(3000)); // 3 second splash fade-out
// I want to wait until splash screen fadeOut has completed before
// this next console output …Run Code Online (Sandbox Code Playgroud) 当计算两个DateTime对象之间的毫秒差异时,我似乎总是得到一个返回的数字,其中数字的小数部分与数字的整数分量相同.例如:1235.1235
为什么会这样?难道我做错了什么?这是语言的怪癖还是DateTime粒度的限制或其他什么?
这可以使用以下代码演示:
DateTime then = DateTime.Now;
Thread.Sleep(1234);
DateTime now = DateTime.Now;
TimeSpan taken = now - then;
string result = taken.TotalMilliseconds.ToString(CultureInfo.InvariantCulture);
//result = "1235.1235"
Run Code Online (Sandbox Code Playgroud)
由CodesInChaos评论:
DateTime`不准确到这个精度级别:参见C#DateTime.Now precision
但是 - 这并不能解释这种行为.
我需要以格式转换秒数3d, 02:05:45.使用以下功能,我可以将其转换为3.02:05:45.我不知道如何将其转换为我想要的格式.请帮忙.
private string ConvertSecondsToDate(string seconds)
{
TimeSpan t = TimeSpan.FromSeconds(Convert.ToDouble(seconds));
if (t.Days > 0)
return t.ToString(@"d\.hh\:mm\:ss");
return t.ToString(@"hh\:mm\:ss");
}
Run Code Online (Sandbox Code Playgroud)
如果我尝试做这样的事情,t.ToString(@"%d , hh\:mm\:ss")我会收到错误,
输入字符串的格式不正确.
我意识到 JSON 没有真正的日期格式,考虑到 JavaScript 使用的是 ISO 8601,因此使用 ISO 8601 是一个不错的选择。持续时间呢?JavaScript 没有内置格式。
P3Y6M4DT12H30M5S我在野外没有看到太多使用。它看起来也非常冗长且难以阅读。据我所知,如果您需要,它也不支持毫秒。TimeSpan类型输出1.02:03:04.0050000为 1 天、2 小时、3 分钟、4 秒和 5 毫秒。我几乎从未见过野外的第一种格式。第二个对我来说似乎更直观,但我担心它在 .NET 之外并不为人所知。第三种格式可能是最跨平台友好的,但完全不是人类可读的。
在研究如何TimeSpan使用 Newtonsoft 的 JSON.net反序列化时,我遇到了当前项目中未使用 Json.net 的代码。根据我正在运行的单元测试,它使用System.Text.Json.JsonSerializer并且似乎不会在反序列化TimeSpan属性的操作上失败。
太好了,我想,.Net Core 3.1已经超越了反序列化 a的历史问题,TimeSpan一切都很好。因此,在最新版本的 Linqpad 6(使用 .NET Core)中启动了一个测试用例来验证,但令我懊恼的是它失败了。
所以问题是,是否可以TimeSpan使用任一库(如果可以的话)进行序列化/反序列化……或者我下面的测试用例在某些方面是否存在缺陷?
代码
public class Project { public TimeSpan AverageScanTime { get; set; } }
Run Code Online (Sandbox Code Playgroud)
Linqpad C# 代码
var newP = new Project() { AverageScanTime = TimeSpan.FromHours(1) };
newP.Dump("New one");
var json = System.Text.Json.JsonSerializer.Serialize(newP);
json.Dump("JSON serialized");
System.Text.Json.JsonSerializer.Deserialize<Project>(json)
.Dump("JSON Deserialize");
Run Code Online (Sandbox Code Playgroud)
反序列化失败
timespan ×10
c# ×7
.net ×3
wpf ×2
.net-core ×1
datetime ×1
duration ×1
formatting ×1
iso8601 ×1
json ×1
modelbinders ×1
silverlight ×1
string ×1
time ×1