我有一个从C#调用Oracle DB的查询.我想编写查询以获取最多5年的数据.
我目前有一个硬编码值 public const int FIVE_YEARS_IN_DAYS = 1825;
但是,由于闰年,这是不正确的.是否有一项功能可以在前5年内给出正确的天数?
我的Web应用程序中有一个模态对话框,用户可以在00:00到24:00之间输入时间范围.范围滑块用于选择此范围.
一切都按预期工作,除非用户设置正确的范围句柄以使其值为24:00,默认模型绑定器无法解析此问题TimeSpan.
public class Timing
{
public TimeSpan Starts { get; set; }
public TimeSpan Ends { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
我被发送回服务器的对象有一个IList<Timing>属性.
所以.问题只是字符串值"24:00"无法解析为TimeSpan实例.是否有可能说服默认模型绑定器识别这样的字符串值?
我想避免在客户端24:00更改为00:00.我知道我有Starts和Ends属性,但我的模型验证验证Ends总是大于Starts.手动更改为23:59也很麻烦.基本上可以通过24:00仍然可以在服务器上解析.
在我的c#程序中,我的要求是计算业务逻辑执行的时间跨度,该时间跨越foreach循环,我必须存储时间跨度.
我正在使用以下代码
for (int i = 0; i < 100; i++)
{
DateTime start= DateTime.Now;
// Business logic
DateTime end= DateTime.Now;
TimeSpan time = start.Subtract(end);
// Save timespan in log file
}
Run Code Online (Sandbox Code Playgroud)
请纠正我是否正在使用正确的代码,或者我是否需要修改以获得更好的性能和结果.
有没有一种优雅的方法来解决这个错误,而不是在if()中检查.HasValue然后添加Date,例如DateTimeUtcNow.Value?
// Compare nullable date time entity.End with utcnow but only compare up to minute precision
// for time.
//
if ((int)(entity.End - DateTime.UtcNow).TotalMinutes < 0)
{
// ASSERT: entity.End < UTCNow (i.e. 12/4/2012 3:56 PM < 12/4/2012 3:57 PM)
}
Run Code Online (Sandbox Code Playgroud)
错误:System.Nullable'不包含'TotalMinutes'的定义
我有一个独特的问题,我的石英作业调度程序实现使用quartz.net代码库版本2.0.1构建,最近发现在运行和执行作业时忽略了时区和utc偏移.这是本版本的quartz.net中的继承错误,并且更新到2.1.1版现在已超出范围,因此我使用此算法编写了一种快速而肮脏的计算偏移量的方法:
(ServerTime - ClientTime) - TargetTime = New_TargetTime_With_Offset
这里的想法是客户,在纽约市说,在下午5点找工作,并希望它在下午2点运行.服务器(此应用程序和作业服务器运行的位置)当前时间是下午2:00,因此我们将客户端时间和服务器时间用于获取偏移量并将该偏移量应用于目标时间,即作业应运行的时间.
我的问题是,这感觉就像计算日期的方式一样,但似乎它会完成这项工作.有没有更好/更可靠的方法来做这个日期数学?这也似乎是边缘情况下的错误,我错过了什么?
这是实施:
/// <summary>
/// Takes three dates and returns the adjusted hour value.
/// All date data is ignored except for the hour.
/// </summary>
/// <param name="serverTime"></param>
/// <param name="clientTime"></param>
/// <param name="targetTime"></param>
/// <returns></returns>
private static DateTime OutputDate(DateTime serverTime, DateTime clientTime, DateTime targetTime)
{
DateTime? output = null;
TimeSpan? dateDiff;
if (serverTime < clientTime)
{
dateDiff = (clientTime - serverTime);
}
else
{
dateDiff = (serverTime - clientTime); …Run Code Online (Sandbox Code Playgroud) 我正在尝试23.40使用以下方法转换以double表示的时间,类似于23小时40分钟的时间:
private TimeSpan DoubleToTimeSpan(double time)
{
double hour = Math.Floor(time);
double minute = (time - hour) * 100d;
TimeSpan ts = new TimeSpan((int)hour, (int)minute, 0);
return ts;
}
Run Code Online (Sandbox Code Playgroud)
在某些时候进行测试时,23.40例如:
Console.WriteLine(DoubleToTimeSpan(23.40));
Run Code Online (Sandbox Code Playgroud)
它表明23:39:00,整整一分钟都被系统偷走了!我的分钟在哪里?
注意:我知道TimeSpan.FromHours,这对我没有帮助,因为这种方法将分钟视为百分比,因此23.40是23小时和40%的小时,这是23:24:00.
我知道这可能是不可能的,但是有人知道.NET中是否有任何快捷方式或机制允许我这样做.
我有一个'日记'
上午9点至下午5点
在这本日记中,我有活动或'约会'
上午10点 - 下午12点 - 任命1
下午1 点至下午1 点30分 - 任命2
我要求的是有一个工具,我可以反转日记,给我在这些任命之外的自由空间.
例如它会返回一个列表
上午9点 - 上午10
点至下午
1点 - 下午1点至下午1点
这样我就可以在我的程序中使用了.
有任何想法吗?
我正在尝试创建一个任务,它将通过powershell无限期地每5分钟重复一次.但是,通过我所有的搜索,我无法想出办法.New-TimeSpan -Days 9999似乎是最大值,无论我做什么,我都没有时间超过9999天.这是触发器:
$trigger = New-ScheduledTaskTrigger -Once -At $date -RepetitionDuration (New-TimeSpan -Days 9999) -RepetitionInterval (New-TimeSpan -Minutes 5)
$PSVersionTable.PSVersion 报告我认为是v4,这是输出:
Major Minor Build Revision
4 0 -1 -1
我有一个float秒数,我想制作一个hh:mm:ss表示24小时倒计时的格式的字符串.我正在尝试使用此代码:
TimeToMissionsReady = 86400f - FromMissionCompletedSeconds;
TimeToMissionsReadyString = string.Format ("{0:00}:{1:00}:{2:00}", TimeToMissionsReady / 3600f, (TimeToMissionsReady / 60f) % 60f, TimeToMissionsReady % 60f);
Debug.Log (TimeToMissionsReadyString);
Run Code Online (Sandbox Code Playgroud)
但它不起作用'因为它显示奇怪的东西,如:24:60:30和一秒钟后24:59:29
难道我做错了什么?
我有一个始终以毫秒为单位的Timespan,但我需要以分钟和秒为单位显示日期,以便始终如此"mm:ss".即使在时间跨度内有几个小时,输出字符串也应该只包含几分钟和几秒.
例如,如果有一个时间跨度02:40:30,它应该被转换为160:30.
有没有办法实现这个目标?
timespan ×10
c# ×8
datetime ×5
time ×2
arrays ×1
asp.net ×1
asp.net-mvc ×1
c#-4.0 ×1
nullable ×1
parsing ×1
powershell ×1
quartz.net ×1
range ×1