我决定让用户输入DDMMYYY来获得他们的生日。如何从这些数据在JavaScript中创建UNIX时间戳?JavaScript从DDMMYYYY做出时间?
另外,一旦我有unix时间戳,我该如何显示它英语,即2000年1月5日星期一?
我可以很容易地做到这一点,我只是不知道在JavaScript中的功能。
我决定让用户输入DDMMYYY来获得他们的生日。如何从这些数据在JavaScript中创建UNIX时间戳?JavaScript从DDMMYYYY做出时间?
另外,一旦我有unix时间戳,我该如何显示它英语,即2000年1月5日星期一?
我可以很容易地做到这一点,我只是不知道在JavaScript中的功能。
您可以使用子字符串来获取Day,Month和Year,然后在javascript中创建一个新的Date对象: var ux = new Date(year,month,day).getMilliseconds/1000;
这对于输入DDMMYYYY
将会很棘手,因为如果用户遗漏了一位数字,或者没有以前导0
作为单数的前缀,它将会丢掉整个计算。出生日期输入的最佳(也是最流行的方式)是日期,月份和年份的3个下拉菜单。那么这将让你轻松工作的日期出一个javascript格式:
var date = new Date($('year').val(), $('month').val(), $('day').val());
alert(date.toDateString());
这将是从UX的角度更好,因为它不允许用户放在一个无效的日期,特别是对那些来自使用不同日期格式的语言环境的用户。
是的,我正在读这篇文章,这是我的第一选择,但正如有人指出的,我倾向于同意 - 它向下滚动列表并选择三个不同的值而烦躁和烦人。每个人都可以很好地输入数字。我的计划是通过先在javascript中计算日期来验证日期,并随时更改DIV以显示他们正在输入的内容,然后快速仔细检查,以确认用户他们做得正确。 – Chud37 2012-08-02 11:08:52
另一点,如果赞成这是用户不必猜测使用什么日期格式,并且没有地方混淆。特别是你使用的年份最后一年(因为DDMMYYYY和MMDDYYY都是常见的)。 – WhyNotHugo 2012-08-04 00:22:50
您需要使用一些图书馆,或代码的东西你自己,因为内置在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?
这是很容易做到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/
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");
缺点:有点冗长。 优点:对于像这样简单的事情,无需外部依赖。
Date.js已经维持了5年。这是错误的,并覆盖了很多原生的'Date.prototype'方法,这使得在生产中使用它很危险。 – timrwood 2012-08-04 00:14:05
Date.js有**糟糕的**设计问题,如上所述,并且没有形成。此外,不鼓励多个'var'语句。 – WhyNotHugo 2012-08-04 00:21:29