我正在设计一个基于Web的多租户SaaS应用程序,该应用程序将托管在Windows Azure上并使用表存储.
到目前为止,我发现的唯一限制是:
我正在决定如何为多个客户分配我的存储空间:
选项1:为 每个客户提供自己的存储帐户.考虑到5帐户默认限制,不太可能.
选项2:为 每个客户提供他们自己的一组表.使用客户标识符作为表名的前缀,例如将Books表拆分为"CustA_Books","CustB_Books"等.
选项3: 拥有一组表,但在分区键前面分隔客户.所以一个"Books"表的分区键为"CustA_Fiction","CustA_NonFiction","CustB_Fiction","CustB_NonFiction"等.
选项2和3有哪些优缺点?单个帐户中可能影响选项2的表数是否有限制?
我有一个LocalDate和一个LocalTime,并希望简单地从它们创建一个LocalDateTime结构.我想到了以下扩展方法,我认为这是最快的但是由于一个不明原因,当前版本的API中不存在字段localTime.TickOfMillisecond.所以它不起作用.
public static LocalDateTime At(this LocalDate localDate, LocalTime localTime) {
return new LocalDateTime(localDate.Year, localDate.Month, localDate.Day, localTime.Hour, localTime.Minute, localTime.Second, localTime.Millisecond, localTime.TickOfMillisecond);
}
Run Code Online (Sandbox Code Playgroud)
那么,我是不是在平时使用:
public static LocalDateTime At(this LocalDate localDate, LocalTime localTime) {
return localDate.AtMidnight().PlusTicks(localTime.TickOfDay);
}
Run Code Online (Sandbox Code Playgroud)
任何建议表示赞赏.
我一直在我的项目中使用Date.js,并且最近读了一篇文章,说明了.js是优越的.
但是,我很难相信它只是因为它无法解析像"从现在起5天"到实际日期之类的输入.
我个人的愿望/要求就是这样
Date.js同时做到了.Moment.js似乎只做#2 ......
我错过了什么,或者我仍然很酷地使用Date.js?
另外......对于我的rails项目.格式化服务器端或客户端是否更好?即.我有一些我想根据相对日期条件格式化的东西.(如果从现在起10天后加上一个类,或者现在> 0天以后添加一个类)...客户端/服务器端日期解析/操作的优缺点?
在Joda Time中,人们可以轻松地使用该DateTimeZone.isLocalDateTimeGap方法来判断本地日期和时间是否无效,因为它属于由春季前进夏令时转换创建的间隙.
DateTimeZone zone = DateTimeZone.forID("America/New_York");
LocalDateTime ldt = new LocalDateTime(2013, 3, 10, 2, 0);
boolean inGap = zone.isLocalDateTimeGap(ldt); // true
Run Code Online (Sandbox Code Playgroud)
但是你如何发现后退过渡?换句话说,如果由于存在重叠而导致本地日期和时间不明确,您如何检测到?我会期待类似的东西zone.isLocalDateTimeOverlap,但它不存在.如果是的话,我会像这样使用它:
DateTimeZone zone = DateTimeZone.forID("America/New_York");
LocalDateTime ldt = new LocalDateTime(2013, 11, 3, 1, 0);
boolean overlaps = zone.isLocalDateTimeOverlap(ldt); // true
Run Code Online (Sandbox Code Playgroud)
Joda-Time文档清楚地表明,如果在转换期间存在重叠,除非另有说明,否则将采用更早的可能性.但它没有说明如何检测这种行为.
如何将Moment.JS库用于国际时区并实时显示?
这是我目前在索引页面中的内容.
码:
<!DOCTYPE html>
<html>
<head>
<script src="moment.js"></script>
<script src="moment-timezone.js"></script>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.8.2/jquery.min.js"></script>
<script>
moment().tz("America/Los_Angeles").format();
document.getElementById("time").firstChild.data = moment().format('hh:mm:ss a')
</script>
</head>
<body>
<span id="time">s</span>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)
这是我第一次使用MomentJS,我不知道我是否正确实现了它并实时显示它而不经常刷新页面.
我正在尝试根据用户偏好超时电子邮件.我早上的计算工作正常但是晚上的电子邮件永远不会被发送,因为日期不符合预期.
首先,这是我用来抓取时间并根据用户位置等进行调整的代码.
var time = moment();
var machineTZ = time.zone();
var userTZ = 420;
var diffTZ = userTZ - machineTZ;
var oneHour = moment(time).add('minutes', 60);
var morningRun = moment().startOf('day');
morningRun.hour(7).minute(0);
morningRun.add('minutes', diffTZ);
var eveningRun = moment().startOf('day');
eveningRun.hour(19).minute(30);
eveningRun.add('minutes', diffTZ);
Run Code Online (Sandbox Code Playgroud)
我正在检查每个小时,看看是否该安排另一封电子邮件出去.现在这是硬编码的,但是当我开始添加用户偏好时,他们将能够选择他们喜欢的东西当地时间.
我一直在调试我的值以进行故障排除.这是清晨运行的作业的输出(从服务器的角度来看):
lastRun: 2013-10-12T00:06:55.088Z (this one is being run at 1 am)
morningRun: 2013-10-11T14:00:00.000Z
eveningRun: 2013-10-12T02:30:00.000Z
Run Code Online (Sandbox Code Playgroud)
运行数字正如我所期望的那样.在两个小时的时间里,我想要晚上的电子邮件出去(我的时间晚上7:30 =第二天服务器时间凌晨2:30).
一小时后再看,我们看到:
lastRun: 2013-10-12T01:06:58.267Z (this one is at 2 am)
morningRun: 2013-10-12T14:00:00.000Z
eveningRun: 2013-10-13T02:30:00.000Z <---- what?
Run Code Online (Sandbox Code Playgroud)
突然之间,我对晚上的计算已经超过日期线,即使它仍然是10/12(还不是10/13).因此,我检查是否应安排电子邮件失败,因为它现在认为我需要在24小时内发送电子邮件,而不是30分钟.
一段时间以来一直在与这种奇怪的不一致作斗争,我以为我已经弄清楚它为什么这样做并使用上面的时区调整我的计算但是没有做到这一点:(.这当然看起来有些奇怪我希望这会发生错误:
//Today is 10/12
var eveningRun = …Run Code Online (Sandbox Code Playgroud) 我正在研究使用NodaTime LocalDate来替换我们现有的BCL DateTime/DateTimeOffset类.由于我们对DateTime可论证的模糊行为的误解,我们在代码中遇到了许多与时区相关的问题.
为了充分利用NodaTime,我希望能够从YYYY-MM-DD形式的ASP.NET Web API 2 Web服务发送和接收日期.我已成功将LocalDate正确序列化为YYYY-MM-DD.但是,我无法将日期查询参数反序列化为LocalDate.LocateDate始终是1970-01-01.
这是我当前的原型代码(为清楚起见,删除了一些代码):
PeopleController.cs
[RoutePrefix("api")]
public class PeopleController : ApiController
{
[Route("people")]
public LocalDate GetPeopleByBirthday([FromUri]LocalDate birthday)
{
return birthday;
}
}
Run Code Online (Sandbox Code Playgroud)
的Global.asax.cs
public class WebApiApplication : System.Web.HttpApplication
{
protected void Application_Start()
{
// Web API configuration and services
var formatters = GlobalConfiguration.Configuration.Formatters;
var jsonFormatter = formatters.JsonFormatter;
var settings = jsonFormatter.SerializerSettings;
settings.ConfigureForNodaTime(DateTimeZoneProviders.Tzdb);
settings.Formatting = Formatting.Indented;
settings.ContractResolver = new CamelCasePropertyNamesContractResolver();
GlobalConfiguration.Configure(WebApiConfig.Register);
}
}
Run Code Online (Sandbox Code Playgroud)
我通过执行Web服务
http://localhost/api/people?birthday=1980-11-20
Run Code Online (Sandbox Code Playgroud)
但是,返回的是1970年1月1日.进入代码我确认birthday设置为1970-01-01.
如何配置序列化,以便将URL中指定的日期作为查询参数(或路径元素)正确地序列化为NodaTime LocalDate?
检查项目文件(.csproj)并注意它创建了一个这样的节点:
<ItemGroup>
<Folder Include="NewFolder1\" />
</ItemGroup>
Run Code Online (Sandbox Code Playgroud)现在删除Visual Studio中的文件夹并保存项目.
请注意,在项目文件中,有一个空节点,如下所示:
<ItemGroup/>
Run Code Online (Sandbox Code Playgroud)删除空节点似乎没有任何区别,那么为什么VS留下这个呢?
我为什么在意?因为这样的提交令人困惑:

首先,我不是在寻找DST是否在当地生效.
我正在运行一个Node进程,其中包含具有关联时间戳的数据.我需要在指定的时区将这些时间戳转换为日/月/年,但我给出的只是时区的偏移量和DST偏移量.
我希望Date/Moment能够更好地适应时区.它们适用于UTC或本地时区,但似乎你需要破解它以获得其他东西.
有什么我想念的吗?假设我可以确定DST是否生效,这是否有效:
var d = new Date(ts + timezone_offset - local_offset);
d.getMonth();
d.getDate();
Run Code Online (Sandbox Code Playgroud)
其中timezone_offset是时区的偏移量(标准偏移量或dst值)?
我如何确定DST是否有效?
我在DateTimeOffset使用实体框架从 PostgreSQL 数据库检索 a 时遇到问题。就研究问题而言,我发现这篇文章可以帮助我了解问题所在,但我无法弄清楚如何解决它。
我有一个允许用户上传文件(主要是图像)的 API,它提取图像的拍摄日期并将其存储在数据库中。它在大多数情况下都很好用。但是,如果日期在 2007 年之前的 3 月 11 日到 4 月的某个时间(日期因年份而异),它会很好地保存到数据库中,但是在尝试检索该行时,它会抛出错误:
本地 dateTime 参数的 UTC 偏移量与偏移参数不匹配。
我Timestamp With Time Zone在 postgreSQL 中使用该CameraDate字段的类型。我不知道如何让它正常工作。如果有一种方法可以在不更改数据库的情况下做到这一点,那将是可取的。
例子:
2001-04-01 10:47:17-06 Works
2001-03-01 10:47:17-06 Works
2001-03-13 10:47:17-06 Doesn't work
2007-03-13 10:47:17-06 Works
Run Code Online (Sandbox Code Playgroud)
这是我的代码:
Context.Files.Add(file);
Context.Entry(file).Reload();
Run Code Online (Sandbox Code Playgroud)
文件类如下所示(为简洁起见,删除了一些字段):
public class File
{
[Column("FileId")]
public override Guid ID { get; set; }
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public int DisplayId { get; set; }
public DateTimeOffset? CameraDate { get; set; } …Run Code Online (Sandbox Code Playgroud)