Javascript 解析日期(2011年2月4日上午9:34:48)
我的输入将来自一个变量(Ticket.CreationDate),如下所示 2011年2月4日上午9:34:48(当然会有所不同) 理想情况下,我可以按原样传入变量并得到不同的结果 喜欢 UnknownDateDunc(Ticket.DateCreation)\Outputs=2011年2月4日,星期五 unknownTimeFunc(Ticket.DateCreation)\Outputs=9:34 AM 干预Date.parse()和.toDateString()的操作 我就是想不出来 已解决:使用Javascript 解析日期(2011年2月4日上午9:34:48),javascript,date,Javascript,Date,我的输入将来自一个变量(Ticket.CreationDate),如下所示 2011年2月4日上午9:34:48(当然会有所不同) 理想情况下,我可以按原样传入变量并得到不同的结果 喜欢 UnknownDateDunc(Ticket.DateCreation)\Outputs=2011年2月4日,星期五 unknownTimeFunc(Ticket.DateCreation)\Outputs=9:34 AM 干预Date.parse()和.toDateString()的操作 我就是想不出来 已解
我建议结合我所知的两个不同的日期库 第一个是DateJS,用于从字符串解析日期。你可以在。您的示例使用其库进行解析(一旦包含适当的引号) 另一个库用于根据日期对象创建格式良好的字符串值。这可在以下网址找到。例如,从该页面:
// Saturday, June 9th, 2007, 5:46:21 PM
var now = new Date();
dateFormat(now, "dddd, mmmm dS, yyyy, h:MM:ss TT");
您有一个静态格式这一事实使得解决方案变得简单
var dateReg =
/(\d{1,2})\/(\d{1,2})\/(\d{4})\s*(\d{1,2}):(\d{2}):(\d{2})\s*(AM|PM)/;
function parseDate(input) {
var year, month, day, hour, minute, second,
result = dateReg.exec(input);
if (result) {
year = +result[3];
month = +result[1]-1; //added -1 to correct for the zero-based months
day = +result[2];
hour = +result[4];
minute = +result[5];
second = +result[6];
if (result[7] === 'PM' && hour !== 12) {
hour += 12;
}
}
return new Date(year, month, day, hour, minute, second);
}
创建一个函数,该函数以日期、in-format string和out-format string作为参数
string FormatDate(string date, string informat,string outformat)
{
var culture = CultureInfo.CreateSpecificCulture("en-US");
return DateTime.ParseExact(date, informat, culture).ToString(outformat);
}
FormatDate("2/4/2011 9:34:48 AM","M/d/yyyy H:m:s tt","H:m:s") //9:34:48
您可以从中获得不同的格式字符串您的输入是否始终具有相同的格式?是的,但日期和时间当然会有所不同,因此mm/dd和hh有时具有1位数字,有时具有2位数字。因此,在返回后,我将如何显示2月4日星期五,2011年?应该注意的是,月份是基于0的索引,所以您必须从结果[1]中减去1。这不是javascript
var dateReg =
/(\d{1,2})\/(\d{1,2})\/(\d{4})\s*(\d{1,2}):(\d{2}):(\d{2})\s*(AM|PM)/;
function parseDate(input) {
var year, month, day, hour, minute, second,
result = dateReg.exec(input);
if (result) {
year = +result[3];
month = +result[1]-1; //added -1 to correct for the zero-based months
day = +result[2];
hour = +result[4];
minute = +result[5];
second = +result[6];
if (result[7] === 'PM' && hour !== 12) {
hour += 12;
}
}
return new Date(year, month, day, hour, minute, second);
}
string FormatDate(string date, string informat,string outformat)
{
var culture = CultureInfo.CreateSpecificCulture("en-US");
return DateTime.ParseExact(date, informat, culture).ToString(outformat);
}
FormatDate("2/4/2011 9:34:48 AM","M/d/yyyy H:m:s tt","H:m:s") //9:34:48