2013-11-14 29 views
3

我正在创建一个基于英国的网站,因此我的网站上的用户通常会使用格式dd/mm/yyyy。我为用户创建了一个日期选择器,并且它工作正常,直到我选择第13天(2013年10月13日)。我猜数据库将这个视为美国的日期,因此一年中没有13个月。WebMatrix - 美国日期/时间格式证明是一个问题

我需要对我的代码做些什么来将其转换为正确的格式,或将我的数据库更改为使用英国格式?什么是最简单的?

if(IsPost){ 
    var dateis = Request["date"]; 
    var insert = "INSERT INTO TestTable (testdate) VALUES (@0)"; 
    var qinsert = db.Execute (insert, Request["date"]); 
} 
} 
<div class="container"> 
<h1>Bootstrap Datepicker</h1> 
<form method="post"> 
<div class="input-append date" id="dp3"> 
<input class="span2" name="date" size="16" type="text" value=""> 
<span class="add-on"><i class="icon-th"></i></span> 
</div> 
<button class="btn btn-success" type="submit" value="Submit"/>Submit</button> 
</form> 
</div> 
<script type="text/javascript"> 
$('#dp3').datepicker({ 
    format: "dd/mm/yyyy", 
    autoclose: true, 
    todayHighlight: true 
}) 
</script> 

回答

2

我个人使用格式d MM yyyy作为datepickers(例如2013年11月14日)。它占用更多的空间,但对我来说它更具可读性,完全避免了dd/mm/yyyymm/dd/yyyy问题。

如果您想保持它的方式,只要您的开发机器和服务器机器在英国时间正确配置,就可以使用AsDateTime()扩展方法来解决问题。

var qinsert = db.Execute (insert, Request["date"].AsDateTime()); 

麦克的另一种回答指出,这并不是虽然最佳实践 - 其代码是依赖于服务器的设置等能够轻松地回来困扰你。

1

通常,建议您将日期存储为yyyy/mm/dd hh:mm:ss格式。这样,区域变化就没有问题。另外,如果您的应用程序是全球性的,您可能需要考虑使用UTC,以便在不同的服务器时间内没有问题。

+0

但我说的是数据库(我使用sql express,而不是CE),只在美国(mm/dd/yyyy)存储?即时通讯所有的存储它,因为你已经建议,但这仍然会抛出错误,当我尝试并将其输入到数据库中。它告诉我我有一个“超出范围的值” – Gavin5511

+0

数据库内部以二进制格式存储日期,而不是格式化的字符串 - 假设您使用'datetime2'或'date'作为列类型。 – Polynomial

+0

@Gavin,你应该阅读:http://sqlmag.com/sql-server/solving-datetime-mystery。 –