我想计算两个日期之间的差异.这就是我目前使用的:
int currentyear = DateTime.Now.Year;
DateTime now = DateTime.Now;
DateTime then = new DateTime(currentyear, 12, 26);
TimeSpan diff = now - then;
int days = diff.Days;
label1.Text = days.ToString() + " Days Until Christmas";
Run Code Online (Sandbox Code Playgroud)
一切正常,除了休息一天.我假设这是因为它不计算一整天不到24小时.有没有办法让它这样做?谢谢.
我有这段代码在过去花了一些时间并生成一个可读的字符串来表示它多久以前.
我本以为Timespan.Hours会给你几个小时,即使它过去多了一天,但它看起来像是分解成它的单独组件(天,月等).我怎么会在几小时前得到(即使它超过1天?
有没有更清晰的方法来编写这种类型的代码,因为它似乎非常spagetti-ish.
这是代码
DateTime when = GetDateTimeinPast();
TimeSpan ts = DateTime.Now.Subtract(when);
switch (ts.Days)
{
case 0:
if (ts.Hours < 1)
b.Append( ts.Minutes + " minutes ago");
else
b.Append( ts.Hours + " hours ago");
break;
case 1:
b.Append( " yesterday");
break;
case 2:
case 3:
case 4:
b.Append( "on " + when.DayOfWeek.ToString());
break;
default:
b.Append(ts.Days + " days ago");
break;
}
Run Code Online (Sandbox Code Playgroud) 我需要显示经过时间跨度的最简单版本.有没有准备好的事情呢?
样品:
HH:mm:ss
10:43:27 > 10h43m27s
00:04:12 > 4m12s
00:00:07 > 7s
Run Code Online (Sandbox Code Playgroud)
我想我需要一个格式提供程序来消磨时间.
我要疯了.有人可以解释一下为什么这些字符串格式格式化相同的东西是如此不同?
<DataGridTextColumn Header="Max Time" IsReadOnly="True" Binding="{Binding MaxTime, StringFormat=hh\\:mm\\:ss, TargetNullValue=---}">
<DataGridTextColumn Header="Min Time" IsReadOnly="True">
<DataGridTextColumn.Binding>
<Binding Path="MinTime" StringFormat="{}{0:hh':'mm':'ss}" TargetNullValue=" --- "/>
</DataGridTextColumn.Binding>
</DataGridTextColumn>
Run Code Online (Sandbox Code Playgroud)
当然,每一个都不起作用.
编辑:我使用WPF越多,我觉得它不是一个成熟的产品.
我正在使用代码
var minutesPassed = (DateTime.UtcNow - conversionsList.Last().DateStamp).TotalMinutes;
Run Code Online (Sandbox Code Playgroud)
计算两个日期之间经过的分钟数.我得到的结果看起来像
254.54445556
我得到分钟和秒钟.如何得到只包含这样的分钟的结果
254
?
我有一个数据库,我time()从PHP 节省时间,这是几秒钟以来1 jan 1970.
有什么方法可以转换,例如2012-12-12到几秒钟以后1 jan 1970?
我想这样做:
SELECT *
FROM Table
WHERE date > '2012-11-30' AND date < '2012-12-30'
Run Code Online (Sandbox Code Playgroud)
这甚至可能吗?
(我想没有任何php日期())
我有一个 TimeSpan 属性
public TimeSpan Time { get; set; }
Run Code Online (Sandbox Code Playgroud)
目前正在使用 swagger 来测试 API 试图弄清楚这里要传递什么 value 值
“时间”: {},
尝试过:
“时间”:{“01:01:01”},
“时间”:{“01:01”},
“时间”:“01:01:01”,
“时间”:01:01:01,
全部返回401代码
我有一个 WebAPI(用 C# 编写)、一个接受带有名为TriggerDelay的 System.TimeSpan-Property 的复杂对象的 POST 方法,以及一个 React Native 应用程序,我从其中以 JSON 格式传递该对象。
但是,此 TimeSpan 属性未正确序列化,我不断在 API 端获取 00:00:00 值。
我正在尝试这样:
"triggerDelay":{
"hours": "30",
"minutes": "10",
"seconds": "0"
},
Run Code Online (Sandbox Code Playgroud)
或者像这样:
"triggerDelay": "30:10:00"
Run Code Online (Sandbox Code Playgroud)
但仍然没有运气......在 API 中,它始终是 00:00:00。
我将不胜感激任何帮助!
UPD这是我的模型:
"triggerDelay":{
"hours": "30",
"minutes": "10",
"seconds": "0"
},
Run Code Online (Sandbox Code Playgroud)
我的WebAPI方法:
public async Task<IActionResult> Publish([FromBody] Alarm alarm) {}
Run Code Online (Sandbox Code Playgroud)
这是我的原始 JSON 对象,在 Postman 的请求正文中设置:
{
"id": "d17ef748-f378-4728-c6c2-9dfab1efce5b",
[...other properties...]
"triggerDelay":{
"hours": "30",
"minutes": "10",
"seconds": "0"
}
}
Run Code Online (Sandbox Code Playgroud) 我在TimeSpan类中遇到一个小问题,它可以解析23:59而不是24:00.
当然,客户想要在24:00输入以表示当天结束而不是23:59或00:00,因为00:00表示当天的开始.
目前我的代码解析结束时间如下:
if ( !TimeSpan.TryParse( ( gvr.FindControl( "txtTimeOff" ) as TextBox ).Text, out tsTimeOff ) )
{
this.ShowValidationError( String.Format( "Please enter a valid 'Time Off' on row '{0}'.", gvr.RowIndex + 1 ) );
return false;
}
Run Code Online (Sandbox Code Playgroud)
对于这种情况,最好的解决办法是什么?
编辑:(解决方案1)
if ( ( gvr.FindControl( "txtTimeOff" ) as TextBox ).Text == "24:00" )
{
tsTimeOff = new TimeSpan( 24, 0, 0 );
}
else
{
if ( !TimeSpan.TryParse( ( gvr.FindControl( "txtTimeOff" ) as TextBox ).Text, out tsTimeOff ) )
{
this.ShowValidationError(
String.Format( …Run Code Online (Sandbox Code Playgroud) 我正试图解决这个问题:
我有很多分钟,我想把它们转换成几小时,当我尝试时TimeSpan,它总是显示几天和几小时.
我的示例代码:
double minutes = 2000 ;
TimeSpan hours = TimeSpan.FromMinutes(minutes);
label1.Text = hours.ToString(@"hh\:mm");
Run Code Online (Sandbox Code Playgroud)
输出结果是 09:20, 但我希望这个结果33:20
如何转换分钟以获得确切的小时数?