我正在处理客户每天工作 30 小时的案例。
一天从早上 6 点开始,然后大约到第二天早上 6 点,但是当他们到达第二天凌晨 1 点时,他们将其视为 25:00。凌晨 2 点将是 26:00,依此类推...
现在,我想知道,有没有一种方法可以在 c# 的 DateTime 类 中处理这个问题,还是我需要做很长时间并将其全部拆分?
更新:
这是澳大利亚的一家媒体机构。再次说明一下,这一天从 06:00 am(2012 年 1 月 12 日) 开始,到午夜时为 24:00。现在,当第二天 01:00 am(2012 年 1 月 13 日) 时,客户端将其视为 25:00 时(2012 年 1 月 12 日)。
他们一天还有24小时。唯一的区别是他们的一天从早上 6 点开始,而不是像我们这样的 00 点。
更新:
我需要使用的典型程序的 XML 表示。 注意:删除了 CHANNEL_CODE 和 CHANNEL_NAME。
<PROGRAMME>
<PROGRAMME_ID>1</PROGRAMME_ID>
<PROGRAMME_NAME>Mass For You At Home</PROGRAMME_NAME>
<CHANNEL_CODE>SomeCode</CHANNEL_CODE>
<CHANNEL_NAME>SomeChannel</CHANNEL_NAME>
<TX_DATE>20120101</TX_DATE>
<START_TIME>06:00</START_TIME>
<DURATION>1800</DURATION>
<AGENCY_AVAIL>C</AGENCY_AVAIL>
<SALES_AVAIL>90</SALES_AVAIL>
<SSB>N</SSB>
</PROGRAMME>
</PROGRAMME>
<PROGRAMME>
<PROGRAMME_ID>2</PROGRAMME_ID>
<PROGRAMME_NAME>Home Shopping</PROGRAMME_NAME>
<CHANNEL_CODE>SomeCode</CHANNEL_CODE>
<CHANNEL_NAME>SomeChannel</CHANNEL_NAME>
<TX_DATE>20120101</TX_DATE>
<START_TIME>26:00</START_TIME>
<DURATION>1800</DURATION>
<AGENCY_AVAIL>C</AGENCY_AVAIL>
<SALES_AVAIL>0</SALES_AVAIL>
<SSB>N</SSB>
</PROGRAMME>
那么,是否有办法将 DateTime 类调整为从 06:00 开始到 30:00 结束?
最佳答案
这听起来有点像您的企业跨越多个时区的情况 - 那么,连续的一天可能超过 24 小时。
然而,这并不意味着您必须调整一天的长度 - 一天是一个国际惯例,而且,除非 Jon Skeet 实际上决定使用他毫无疑问 build 的巨型重力枪(在一天内; -) 并用它来改变地球的自转速度,延长我们称之为一天的光暗交替周期,你最好的选择可能是使用类次或时隙的概念;
轮类(在您的情况下,是一个时间段!)有一个工作日、一个长度和一个时区。然后您可以:
最好不要将这些称为天,因为它会混淆简单的术语。
在您的例子中,您甚至不关心时区。我认为您真正需要的只是广告时间段开始的日期/时间,以及它应该显示的小时数。
编辑:对于您的 XML,您仍然可以使用上述概念。您可以:
1) 当您获得 XML 并将其存储为“正确的”日期时间时对其进行清理 - 因此计算出 UTC 开始时间是什么并使用持续时间
2) 创建一个类,将其转换为具有长度的正常日期时间表示。这种方法的好处是您也可以走另一条路,回到源代码约定。
实际上,我认为这就是您真正需要的。
例如,在上面的xml中,你可以创建一个类;像这样的东西应该可以解决问题:
public class AdvertDate{
public DateTime TransmissionDate { get; set;} //Store as 06:00 on the TX_Date
public int AdvertStartTime { get; set; } //Store as 0 - 30
public int Duration { get; set; } //Store as 18 - assuming whole numbers so change if needed
public DateTime RealDate {
get{
return TransmissionDate.AddHours(AdvertStartTime);
}
}
public AdvertDate(){
}
public AdvertDate(DateTime transmissionDate, int advertStartTime, int duration){
TransmissionDate = transmissionDate;
AdvertStartTime = advertStartTime;
Duration = duration;
}
public AdvertDate ConvertRealDateTimeToAdvertDate(DateTime realDateTime, int advertDuration){
if(realDateTime.Hour < 6)
{
DateTime advertDateTime = realDateTime.AddDays(-1).Date.AddHours(6);
return new AdvertDate(advertDateTime, 24+realDateTime.Hour, advertDuration);
}
else{
return new AdvertDate(realDateTime.Date.AddHours(6), realDateTime.Hour, advertDuration);
}
}
public void LoadFromXml(){
//Xml Loading here (or in a dedicated class or wherever)
}
}
关于c# - 如何处理从06 :00 and ends at 30:00开始的一天,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8832038/
我在理解Enumerator.new方法的工作原理时遇到了一些困难。假设文档中的示例:fib=Enumerator.newdo|y|a=b=1loopdoy[1,1,2,3,5,8,13,21,34,55]循环中断条件在哪里,它如何知道循环应该迭代多少次(因为它没有任何明确的中断条件并且看起来像无限循环)? 最佳答案 Enumerator使用Fibers在内部。您的示例等效于:require'fiber'fiber=Fiber.newdoa=b=1loopdoFiber.yieldaa,b=b,a+bendend10.times.m
如何在ruby中调用C#dll? 最佳答案 我能想到几种可能性:为您的DLL编写(或找人编写)一个COM包装器,如果它还没有,则使用Ruby的WIN32OLE库来调用它;看看RubyCLR,其中一位作者是JohnLam,他继续在Microsoft从事IronRuby方面的工作。(估计不会再维护了,可能不支持.Net2.0以上的版本);正如其他地方已经提到的,看看使用IronRuby,如果这是您的技术选择。有一个主题是here.请注意,最后一篇文章实际上来自JohnLam(看起来像是2009年3月),他似乎很自在地断言RubyCL
我正在尝试在Ruby中复制Convert.ToBase64String()行为。这是我的C#代码:varsha1=newSHA1CryptoServiceProvider();varpasswordBytes=Encoding.UTF8.GetBytes("password");varpasswordHash=sha1.ComputeHash(passwordBytes);returnConvert.ToBase64String(passwordHash);//returns"W6ph5Mm5Pz8GgiULbPgzG37mj9g="当我在Ruby中尝试同样的事情时,我得到了相同sha
这篇文章是继上一篇文章“Observability:从零开始创建Java微服务并监控它(一)”的续篇。在上一篇文章中,我们讲述了如何创建一个Javaweb应用,并使用Filebeat来收集应用所生成的日志。在今天的文章中,我来详述如何收集应用的指标,使用APM来监控应用并监督web服务的在线情况。源码可以在地址 https://github.com/liu-xiao-guo/java_observability 进行下载。摄入指标指标被视为可以随时更改的时间点值。当前请求的数量可以改变任何毫秒。你可能有1000个请求的峰值,然后一切都回到一个请求。这也意味着这些指标可能不准确,你还想提取最小/
C#实现简易绘图工具一.引言实验目的:通过制作窗体应用程序(C#画图软件),熟悉基本的窗体设计过程以及控件设计,事件处理等,熟悉使用C#的winform窗体进行绘图的基本步骤,对于面向对象编程有更加深刻的体会.Tutorial任务设计一个具有基本功能的画图软件**·包括简单的新建文件,保存,重新绘图等功能**·实现一些基本图形的绘制,包括铅笔和基本形状等,学习橡皮工具的创建**·设计一个合理舒适的UI界面**注明:你可能需要先了解一些关于winform窗体应用程序绘图的基本知识,以及关于GDI+类和结构的知识二.实验环境Windows系统下的visualstudio2017C#窗体应用程序三.
1.在Python3中,下列关于数学运算结果正确的是:(B)a=10b=3print(a//b)print(a%b)print(a/b)A.3,3,3.3333...B.3,1,3.3333...C.3.3333...,3.3333...,3D.3.3333...,1,3.3333...解析: 在Python中,//表示地板除(向下取整),%表示取余,/表示除(Python2向下取整返回3)2.如下程序Python2会打印多少个数:(D)k=1000whilek>1: print(k)k=k/2A.1000 B.10C.11D.9解析: 按照题意每次循环K/2,直到K值小于等
我正在我的Rails项目中安装Grape以构建RESTfulAPI。现在一些端点的操作需要身份验证,而另一些则不需要身份验证。例如,我有users端点,看起来像这样:moduleBackendmoduleV1classUsers现在如您所见,除了password/forget之外的所有操作都需要用户登录/验证。创建一个新的端点也没有意义,比如passwords并且只是删除password/forget从逻辑上讲,这个端点应该与用户资源。问题是Grapebefore过滤器没有像except,only这样的选项,我可以在其中说对某些操作应用过滤器。您通常如何干净利落地处理这种情况?
假设您编写了一个类Sup,我决定将其扩展为SubSup。我不仅需要了解你发布的接口(interface),还需要了解你的私有(private)字段。见证这次失败:classSupdefinitialize@privateField="fromsup"enddefgetXreturn@privateFieldendendclassSub问题是,解决这个问题的正确方法是什么?看起来子类应该能够使用它想要的任何字段而不会弄乱父类(superclass)。编辑:equivalentexampleinJava返回"fromSup",这也是它应该产生的答案。 最佳答案
我正在开发一个Rails应用程序,我需要在其中找到给定特定偏移量或时区的夏令时开始和结束日期。我基本上在我的数据库中保存了从用户浏览器接收到的时区偏移量(“+3”,“-5”),我想在它出现时修改它由于夏令时的变化。我知道Time实例变量有dst?和isdst方法,如果存储在它们中的日期在夏令时与否。>Time.new.isdst=>true但是使用它来查找夏令时的开始和结束日期会占用太多资源,而且我还必须为我拥有的每个时区偏移量执行此操作。我想知道更好的方法。 最佳答案 好的,基于你所说的和@dhouty'sanswer:您希望能够
我有一台生产机器和一台开发机器,都运行ubuntu8.10并且都运行最新的phusionpassenger。当我在osx上的本地开发机器上使用ruby1.9.1时,我想知道外面的人是否已经在使用带有ruby1.9.1甚至1.9.2的phusionpassenger?如果是这样,请告诉我们您的设置!此外,有没有办法在apache上使用phusionpassenger同时运行ruby1.8.7(ree)和1.9.1?感谢您的指点,我在任何地方都找不到任何提示... 最佳答案 是的,从某些2.2.x版本开始就正式支持它,我不记