2014-01-22 5 views
0

У меня есть этот код на C#, который генерирует результат ниже при каждом загрузке браузера.C# для преобразования реального времени в реальном времени в JavaScript

C# 

Double ValorGerado = 40.1714444; 
Double Co2 = 13.1254644; 

TimeSpan final = DateTime.Now.Subtract(Convert.ToDateTime("01/01/" + DateTime.Now.Year.ToString() + " 00:00")); 

this.lblGeracao.Text = String.Format("{0:#,##0}", (Convert.ToDecimal(ValorGerado * final.TotalSeconds))) + "*"; 

this.lblCO2.Text = String.Format("{0:#,##0}", ((Convert.ToInt32(Co2 * final.TotalSeconds)/1000))) + "**"; 

Результат:

- У нас есть генерировать 75,070,550 кВтч * Clean Energy в 2013 г.

- Это означает, что мы перестанем излучающих 24,528 ** г CO2 в атмосфере.

Как я могу получить этот результат в реальном времени с помощью javaScript? как он мог это сделать?

я начал делать что-то вроде этого:

JS 
var ValorGerado = 40.1714444; 
var Co2 = 13.1254644; 


var d = new Date(); 
var curr_date = d.getDate(); 
var curr_month = d.getMonth() + 1; 
var curr_year = d.getFullYear();   
var curr_seconds = d.getSeconds(); 


setInterval(function() { 

$('.Timer').text((new Date) * ValorGerado); 

}, 1); 

И в HTML

HTML 
<div class="Timer" style="width:100%;"></div> 

Любая помощь будет признателен, спасибо.

Вот пример Somthing очень похожи: http://opower.com/

+2

Ну, вы не вычисляете разницу дат ... '(новая дата() - d)', которая дает вам миллисекунды. – epascarello

+0

Вы ищете [Date.getTime] (http://msdn.microsoft.com/en-us/library/7hcawkw2%28v=vs.94%29.aspx) метод ... и [расчет истекшего времени] (http://msdn.microsoft.com/en-us/library/ee532932%28v=vs.94%29.aspx). –

+0

Эй, Алексей, спасибо, но я не знаю, как это сделать. –

ответ

0

Попробуйте это:

var yearStart = new Date((new Date()).getFullYear(),0,1), 
    ValorGerado = 40.1714444, 
    Co2 = 13.1254644; 

Number.prototype.toNormalString = String.prototype.toNormalString || function(){ 
    return this.toString().split('.')[0].replace(/\B(?=(?:\d{3})+(?!\d))/g, ","); 
} 

setInterval(function(){ 
    var secondsElapsed = (new Date()).getTime() - yearStart.getTime();  
    $('.geracaoValue').text(secondsElapsed * ValorGerado);  
    $('.co2Value').text(((secondsElapsed * Co2)/1000).toNormalString()); 
}, 30); 

Это, вероятно, может быть сделано немного чище, но я пытался подражать метод C#. Если вы хотите отформатировать строку без десятичной и добавить запятую, используйте Number.toNormalString. Пример имеет одно значение в каждом направлении.

Вот скрипка: http://jsfiddle.net/MQZUB/3/

Update: я понял, расширение объекта Number вместо строкового объекта было много чище.

+0

Да, спасибо, очень близко, как к тому же конкатенировать: 75,070,550 кВтч и 24,528? Есть идеи? –

+0

Вы можете выполнить любую строку с результатом toNormalString() с помощью оператора '+'. Тем не менее, я не рекомендую смешивать форматирование и функциональный код на этом уровне. Вот отредактированный скрипт в соответствии с вашим примером: [link] (http://jsfiddle.net/MQZUB/4/) – bigbangtheorem

+0

Благодарим вас за ваше ясное и полезное объяснение @bigbangtheorem –

Смежные вопросы