Axe*_*ala 10 javascript time date datejs
我试图比较芬兰时间形式的两个日期:dd.mm.YYYY或dmYYYY或dd.m.YYYY或d.mm.YYYY.
我很难找到如何做到这一点,我目前的代码将无法正常工作.
<script src="inc/date-fi-FI.js" type="text/javascript"></script>
<script type="text/javascript">
function parseDate() {
var date = $('#date').val();
var parsedDate = Date.parse(date);
alert('Parsed date: '+parsedDate);
}
function jämförMedIdag (datum) {
if (datum == null || datum == "") {
alert('Inget datum!');
return;
}
/*resultat = Date.compare(Datum1,Datum2);
alert(resultat); */
var datum = Date.parse(datum);
var dagar = datum.getDate();
var månader = datum.getMonth();
var år = datum.getYear();
var nyttDatum = new Date();
nyttDatum.setFullYear(år,månader,dagar);
var idag = new Date();
if(nyttDatum>idag) {
var svar = nyttDatum - idag;
svar = svar.toString("dd.MM.yyyy");
alert(svar);
return(svar);
} else {
var svar = idag - nyttDatum;
svar = svar.toString("dd.MM.yyyy");
alert(svar);
return(svar);
}
}
</script>
Run Code Online (Sandbox Code Playgroud)
此代码将尝试计算两个日期之间的差异,其中一个日期为今天.没有成功lolz.
提前致谢!
我的最终代码(谢谢RobG!):
function dateDiff(a,b,format) {
var milliseconds = toDate(a) - toDate(b);
var days = milliseconds / 86400000;
var hours = milliseconds / 3600000;
var weeks = milliseconds / 604800000;
var months = milliseconds / 2628000000;
var years = milliseconds / 31557600000;
if (format == "h") {
return Math.round(hours);
}
if (format == "d") {
return Math.round(days);
}
if (format == "w") {
return Math.round(weeks);
}
if (format == "m") {
return Math.round(months);
}
if (format == "y") {
return Math.round(years);
}
}
Run Code Online (Sandbox Code Playgroud)
它不完全准确,但非常接近.我最后添加一些插件来计算每周的一个月或一小时,任何人都可以自由复制和使用此代码.
geo*_*ill 10
如果您使用Datejs和可选的time.js模块,则可以通过创建TimeSpan对象使用以下代码运行计算:
例
// dd.mm.YYYY or d.m.YYYY
// dd.m.YYYY or d.mm.YYYY
var start = Date.parse("20.09.2011");
var end = Date.parse("28.09.2011");
var span = new TimeSpan(end - start);
span.days; // 8
Run Code Online (Sandbox Code Playgroud)
当然,如果你真的想要额外的简洁,上面的内容可以简化为一行.
例
new TimeSpan(Date.parse(end) - Date.parse(start)).days; // pass 'end' and 'start' as strings
Run Code Online (Sandbox Code Playgroud)
希望这可以帮助.
如果您的日期是常见形式 d/m/y 或其某种变体的字符串,您可以使用:
function toDate(s) {
var s = s.split('/');
return new Date(s[2], --s[1], s[0]);
}
Run Code Online (Sandbox Code Playgroud)
您可能想要验证输入,也可能不验证输入,具体取决于您对所提供数据的一致性的信心程度。
为了允许使用不同的分隔符(例如句点 (.) 或连字符 (-)),要分割的正则表达式可以是:
var s = s.split(/[/\.-]/);
Run Code Online (Sandbox Code Playgroud)
日期将分别分为日期、月份和年份数字。这些部分将传递给 Date 构造函数以创建该日期的本地日期对象。由于 javascript 月份的索引为零(一月为 0,二月为 1 等),月份数必须减一,因此--s[1].
要比较两个日期对象(即获取以毫秒为单位的差异),只需将一个对象减去另一个对象即可。如果您想要以天为单位的结果,则除以一天和一轮中的毫秒数(以考虑夏令时引起的任何微小差异)。
因此,如果您想查看今天和某个日期之间有多少天,请使用:
function diffToToday(s) {
var today = new Date();
today.setHours(0,0,0);
return Math.round((toDate(s) - today) / 8.64e7);
}
alert(diffToToday('2/8/2011')); // -1
alert(diffToToday('2/8/2012')); // 365
Run Code Online (Sandbox Code Playgroud)
附言。“芬兰”数据格式是世界上绝大多数不使用 ISO 格式日期的国家所使用的一种格式。
| 归档时间: |
|
| 查看次数: |
9606 次 |
| 最近记录: |