在 MVC 控制器中将 Javascript 时间字符串转换为 DateTime 或 TimeSpan
Posted
技术标签:
【中文标题】在 MVC 控制器中将 Javascript 时间字符串转换为 DateTime 或 TimeSpan【英文标题】:Convert Javascript time string to DateTime or TimeSpan in MVC Controller 【发布时间】:2014-02-10 05:27:12 【问题描述】:当 javascript 字符串“5:00 PM”发送到 MVC 控制器时,如何将其转换为 DateTime 或 TimeSpan。我正在使用
引导时间选择器
// usage
<script type="text/javascript">
$('#timepicker1').timepicker();
</script>
Javascript 负载
Skip: 0
Status: []
Take: 15
DueTime: "1:00 PM" // keep in mind that this is a string
服务器对象类似于
class TimeSheet
public TimeSpan DueTime;
【问题讨论】:
ATimeSpan
代表两个时间之间的跨度——一个增量或差异——它并不意味着实际存储时间点信息。 IMO,您的 DueTime
属性应该是 DateTime
结构。您可以将字符串传递给服务器并使用方法shown in this question在服务器端解析它。
【参考方案1】:
使用DateTime.Parse
。当您的字符串随时间传输时,在服务器(在控制器上)进行转换。
http://msdn.microsoft.com/ru-ru/library/system.datetime.parse(v=vs.110).aspx
【讨论】:
应该有一个 SO 语言过滤器,可以将 MSDN 链接转换为登录用户的语言环境:)【参考方案2】:好的,所以我读错了,因此删除了答案..!
但我不会放弃;)
您的 bootstrap-timepicker 会给您一个“下午 1:00”的时间。
但在此之前,我们将在服务器端查看我们可以解析成日期时间对象的内容。
这是用于解析日期时间的 C#。
string dateString, format;
DateTime result;
CultureInfo provider = CultureInfo.InvariantCulture;
dateString = "15/08/2000 16:58"
format = "dd/MM/yyyy HH:mm"
result = DateTime.ParseExact(dateString, format, provider);
现在,当您看到您的字符串看起来不像那样时,我将假设您想要 今天的日期!
这是我在转换为 24 小时时钟时经常使用的功能。
function ConvertTimeformat(str)
var time = str;
var hours = Number(time.match(/^(\d+)/)[1]);
var minutes = Number(time.match(/:(\d+)/)[1]);
var AMPM = time.match(/\s(.*)$/)[1];
if (AMPM == "PM" && hours < 12) hours = hours + 12;
if (AMPM == "AM" && hours == 12) hours = hours - 12;
var sHours = hours.toString();
var sMinutes = minutes.toString();
if (hours < 10) sHours = "0" + sHours;
if (minutes < 10) sMinutes = "0" + sMinutes;
//Creating the todays date in the right format
var today = new Date();
var dd = today.getDate();
var mm = today.getMonth()+1;//January is 0!`
var yyyy = today.getFullYear();
if(dd<10)dd='0'+dd
if(mm<10)mm='0'+mm
var todaysdate = dd+'/'+mm+'/'+yyyy +" " ; //<--I added an extra space!
var hoursNminutes = sHours + ":" + sMinutes
//CREATE THE RIGHT FORMAT FOR DATE.PARSEXACT "dd/MM/yyyy HH:mm"
var dateToParse = todaysdate + hoursNminutes
return dateToParse;
要使用该功能,请这样做!
//Call it and provide your bootstrap time. And make it return to a variable
var dateToBeSentToServer = ConvertTimeformat("1:00 PM");
//OR With the bootstraptime as a variable
var dateToBeSentToServer = ConvertTimeformat(timevariable);
现在您可以将 dateToBeSentToServer 发送到您的服务器端进行解析!
【讨论】:
您能解释一下您将如何从“下午 1:00”到纪元时间吗? 我正在使用 bootstrap-timepicker,我会在 bootstrap 函数中这样做吗? 我不想将它作为字符串发送到服务器端,这看起来像是一个肮脏的工作。以上是关于在 MVC 控制器中将 Javascript 时间字符串转换为 DateTime 或 TimeSpan的主要内容,如果未能解决你的问题,请参考以下文章
如何在 C# 中将数据发送到 ASP.NET Core MVC 控制器?
在 asp.net mvc razor 应用程序中将 Datetime C# 类型转换为 Date javascript