# Cangaceiro Javascript - DATE - value="Date.now()"

**URL:** https://forum.casadocodigo.com.br/t/cangaceiro-javascript-date-value-date-now/1492
**Category:** Livros
**Tags:** apis-rest-nodejs
**Created:** [Agosto 25, 2019, 3:48pm UTC](https://forum.casadocodigo.com.br/t/cangaceiro-javascript-date-value-date-now/1492 "2019-08-25T15:48:27Z")
**Posts on this page:** 1
**Page:** 1

<div class="post-metadata">

### Author: ![Kovalev](https://yyz1.discourse-cdn.com/flex029/user_avatar/forum.casadocodigo.com.br/kovalev/32/14233_2.png) [@Kovalev](https://forum.casadocodigo.com.br/u/Kovalev)
#### Post date: [Agosto 25, 2019, 3:48pm UTC](https://forum.casadocodigo.com.br/t/cangaceiro-javascript-date-value-date-now/1492/1 "2019-08-25T15:48:27Z")

</div>

Bom dia pessoal, no inicio do livro Cangaceiro Javascript a data é criada utilizando a data atual e mostrada no console data/hora.  
No decorrer, o formulário passa a ter uma data input type “date” e o id=“data” onde podemos incluir a data.  
Mas gostaria de saber como é possível manter a data utilizando a data atual e hora atual com um input type “hidden” ( o usuário não precisa digitar a data para incluir uma negociação).

Eu estou neste estágio do livro:

> **[flaviohenriquealmeida/cangaceiro-javascript](https://github.com/flaviohenriquealmeida/cangaceiro-javascript/tree/master/05/client)**
>
> Contribute to flaviohenriquealmeida/cangaceiro-javascript development by creating an account on GitHub.

**Classe NegociacaoController - onde criamos um construtor e uma negociação:**

```
class NegociacaoController {
constructor() {
  let $ = document.querySelector.bind(document);
    this._inputData = $('#data');
    this._inputQuantidade = $('#quantidade');
    this._inputValor = $('#valor');
    this._negociacoes = new Negociacoes();

   }

 adiciona(event) {
    event.preventDefault();

    this._negociacoes.adiciona(this._criaNegociacao());

    console.log(this._negociacoes);

    this._limpaFormulario();
     }

   _limpaFormulario() {

    this._inputData.value = '';

    this._inputQuantidade.value = 1;

    this._inputValor.value = 0.0

    this._inputData.focus();

     }

 _criaNegociacao() {

    return new Negociacao(

        DateConverter.paraData(this._inputData.value),

        parseInt(this._inputQuantidade.value),

        parseFloat(this._inputValor.value)

      );

   }

 }

```

**classe Negociação:**  
class Negociacao {

```
constructor(_data, _quantidade, _valor) {

    Object.assign(this, { _quantidade, _valor })

    this._data = new Date(_data.getTime());

    Object.freeze(this);

    }

  get volume() {

    return this._quantidade * this._valor;

   }

   get data() {

    return new Date(this._data.getTime());

     }

   get quantidade() {
    return this._quantidade;

    }
   get valor() {

    return this._valor;

  }

 }

```

**classe DateConverter**

```
 class DateConverter {

 constructor() {

    throw new Error('Esta classe não pode ser instanciada');

  }

static paraTexto(data) {

    return `${data.getDate()}/${data.getMonth() + 1}/${data.getFullYear()}`;

  }

  static paraData(texto) {

    if (!/^\d{4}-\d{2}-\d{2}$/.test(texto))

        throw new Error('Deve estar no formato aaaa-mm-dd');

    return new Date(...texto.split('-').map((item, indice) => item - indice % 2));

    }

}
```
