javascript从DDMMYYYY赚到时间?

时间:2012-08-02 10:54:27

标签: javascript jquery html

我决定让用户输入DDMMYYY来过生日。如何从该数据在javascript中创建UNIX时间戳?

另外,一旦我有unix时间戳,我怎么用英文显示它,即2000年1月5日星期一?

我可以在PHP中轻松完成,我只是不知道javascript中的函数。

6 个答案:

答案 0 :(得分:1)

对于DDMMYYYY的输入,这将是棘手的,因为如果用户错过一个数字,或者没有前导单数与前导0,它将抛出整个计算。出生日期输入的最佳(也是最流行的方式)是3个日期,月份和年份的下拉菜单。这样您就可以轻松地以javascript格式处理日期:

var date = new Date($('year').val(), $('month').val(), $('day').val());

alert(date.toDateString());

从UX角度来看,这样会更好,因为它不允许用户输入无效日期,尤其是对于那些使用不同日期格式的区域设置的用户。

答案 1 :(得分:0)

您可以使用substring来获取Day,Month和Year,然后在javascript中创建一个新的Date对象: var ux = new日期(年,月,日).getMilliseconds / 1000;

答案 2 :(得分:0)

你需要使用一些库,或者自己编写代码,因为JavaScript的内置日期解析和编写例程非常有限。这里使用的格式基本上与系统有关。

我有偏见(作为“Going Global with JavaScript and Globalize.js”的作者),但我仍然建议使用Globalize.js,即使在你真的没有全球化但只使用英文符号的情况下。毕竟,使用日期的英文符号是一种本地化形式。

示例:

<script src=globalize.js></script>
<script>
var birthDateString = "09Feb1952"; // just a test case
var birthDate = 
   Globalize.parseDate(birthDateString, 'ddMMMyyyy');
if(!birthDate) {
   alert('Error in birth date!'); // replace by suitable error handling
}
else {
   var unixTimeStamp = Math.round(birthDate.getTime()/1000);
   document.write(unixTimeStamp + "<br>");
   document.write(Globalize.format(birthDate, 'dddd d MMM yyyy'));
}
</script>

这最终会导致结果“1952年2月9日星期六”,这不是所要求的形式,所以如果你真的想要那个表格,你需要一些添加后缀“th”,“st”的附加逻辑“,”nd“或”rd“。

关于UNIX时间戳与JavaScript Date对象,请参阅问题How do you get a timestamp in JavaScript?

的答案

答案 3 :(得分:0)

使用moment.js非常容易。

var birthday = moment("10071986", "DDMMYYYY");
var unix = birthday.unix();
var humanized = birthday.format("dddd Do MMM YYYY");

这是一个有效的jsfiddle。 http://jsfiddle.net/timrwood/rXArM/

答案 4 :(得分:0)

function dateFromStr(input) {
  var year, month, day;

  year = parseInt(input.substr(4,4));
  month = parseInt(input.substr(2,2));
  day = parseInt(input.substr(0,2));

  return new Date(year, month, day);
}

dateFromStr("03082012");

缺点:有点冗长。 优点:对于像这样简单的事情没有外部依赖。

答案 5 :(得分:-1)

Date.js是一个很棒的第三方库,它允许您以任何格式解析用户输入,如下所示:

没有分隔符,这样做可能会有点棘手。如果你愿意提取日,月和年Date.js提供优雅:

var dl = new Date(2007, 0, 1);
var unixTimeStamp = dl.valueOf()/1000;
var customDateString = dl.toString('dddd dd MMM yyyy');

在行动here

中查看