Конвертация C # в JavaScript в реальном времени

0

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

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))) + "**";

Результат:

- В 2013 году мы произвели 75 070 550 кВтч * Чистая энергия.

- Это означает, что мы прекращаем излучать в атмосферу 24 528 ** г СО2.


Как я могу получить этот результат в реальном времени с помощью 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>

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

Вот пример, который очень похож: http://opower.com/

  • 2
    Ну, вы не рассчитываете разницу в дате ... (new Date() - d) которая дает вам миллисекунды.
  • 0
    Вы ищете метод Date.getTime ... и рассчитывает прошедшее время .
Показать ещё 2 комментария
Теги:

1 ответ

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);

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

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

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

  • 0
    Да, спасибо, очень близко, как объединить так же, как это: 75 070 550 кВт-ч и 24 528? любая идея?
  • 0
    Вы можете связать любую строку с результатом toNormalString () с помощью оператора «+». Однако я не рекомендую смешивать форматирование и функциональный код на этом уровне. Вот отредактированная скрипка согласно вашему примеру: ссылка
Показать ещё 1 комментарий

Ещё вопросы

Сообщество Overcoder
Наверх
Меню