1

我决定让用户输入 DDMMYYY 来获得他们的生日。如何根据该数据在 javascript 中创建 UNIX 时间戳?

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

我可以很容易地用 PHP 做到这一点,我只是不知道 javascript 中的函数。

4

6 回答 6

1

这对于 的输入会很棘手DDMMYYYY,因为如果用户遗漏了一个数字,或者没有在单数前面加上前导0,它将导致整个计算失败。出生日期输入的最佳(也是最流行的方式)是日期、月份和年份的 3 个下拉菜单。这将允许您轻松地以 javascript 格式计算日期:

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

alert(date.toDateString());

从用户体验的角度来看,这会更好,因为它不允许用户输入无效的日期,尤其是对于来自使用不同日期格式的语言环境的用户。

于 2012-08-02T11:03:21.343 回答
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");

缺点:有点冗长。优点:像这样简单的东西没有外部依赖。

于 2012-08-04T00:19:35.863 回答
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/

于 2012-08-04T00:11:52.707 回答
0

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

我有偏见(作为“使用 JavaScript 和 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>

这最终会得到结果“Saturday 9 Feb 1952”,这与请求的形式不完全一样,所以如果你真的想要那种形式,你需要一些添加后缀“th”、“st”、“ nd”或“rd”。

关于 UNIX 时间戳与 JavaScript Date 对象,请参阅如何在 JavaScript 中获取时间戳?

于 2012-08-02T11:43:49.310 回答
0

您可以使用子字符串获取日、月和年,然后在 javascript 中创建一个新的 Date 对象: var ux = new Date(year, month, day).getMilliseconds / 1000;

于 2012-08-02T11:03:02.897 回答
-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');

在此处查看实际操作

于 2012-08-02T11:08:22.737 回答