# How to format time

**URL:** <https://discourse.nodered.org/t/how-to-format-time/76448>\
**Category:** General\
**Created:** [11 March 2023 22:46 UTC](https://discourse.nodered.org/t/how-to-format-time/76448 "2023-03-11T22:46:40Z")\
**Posts on this page:** 18\
**Page:** 1

<div class="post-metadata">

**Author:** ![Trying\_to\_learn](https://sea2.discourse-cdn.com/flex026/user_avatar/discourse.nodered.org/trying_to_learn/32/28400_2.png) [@Trying\_to\_learn](https://discourse.nodered.org/u/Trying_to_learn)\
**Post date:** [11 March 2023 22:46 UTC](https://discourse.nodered.org/t/how-to-format-time/76448/1 "2023-03-11T22:46:40Z")

</div>

Sorry folks, but I am a bit stuck.

This is the code I have that works.

```auto
let now = Date();
msg.time = now;
return msg;

```

But I am only wanting a basic time output of HH:mm:ss

How would I get that - easily. I know of the `moment` node.  
But I want to keep this VERY simple. Which I know is out of character for me. 😉

---

<div class="post-metadata">

**Author:** ![ralphwetzel](https://sea2.discourse-cdn.com/flex026/user_avatar/discourse.nodered.org/ralphwetzel/32/53713_2.png) [@ralphwetzel](https://discourse.nodered.org/u/ralphwetzel)\
**Post date:** [11 March 2023 22:52 UTC](https://discourse.nodered.org/t/how-to-format-time/76448/2 "2023-03-11T22:52:22Z")

</div>

Use [now.toLocalTimeString()](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/toLocaleTimeString);

---

<div class="post-metadata">

**Author:** ![Trying\_to\_learn](https://sea2.discourse-cdn.com/flex026/user_avatar/discourse.nodered.org/trying_to_learn/32/28400_2.png) [@Trying\_to\_learn](https://discourse.nodered.org/u/Trying_to_learn)\
**Post date:** [11 March 2023 22:56 UTC](https://discourse.nodered.org/t/how-to-format-time/76448/3 "2023-03-11T22:56:54Z")

</div>

You greatly over estimate my intelligence.

I see words but that's it.

I can't _translate_ that to anything I can use.  
Sorry.

---

<div class="post-metadata">

**Author:** ![ralphwetzel](https://sea2.discourse-cdn.com/flex026/user_avatar/discourse.nodered.org/ralphwetzel/32/53713_2.png) [@ralphwetzel](https://discourse.nodered.org/u/ralphwetzel)\
**Post date:** [11 March 2023 23:16 UTC](https://discourse.nodered.org/t/how-to-format-time/76448/4 "2023-03-11T23:16:27Z")

</div>

I _thought_ it was obvious:

```auto
let now = Date();
msg.time = now.toLocaleTimeString();
return msg;

```

EDIT:

- Fixed the typo @ [.toLocal **e** TimeString()](https://discourse.nodered.org/t/how-to-format-time/76448/14)
- Readers are encouraged to read on - as there's another issue in this sniplet.

---

<div class="post-metadata">

**Author:** ![Trying\_to\_learn](https://sea2.discourse-cdn.com/flex026/user_avatar/discourse.nodered.org/trying_to_learn/32/28400_2.png) [@Trying\_to\_learn](https://discourse.nodered.org/u/Trying_to_learn)\
**Post date:** [11 March 2023 23:18 UTC](https://discourse.nodered.org/t/how-to-format-time/76448/5 "2023-03-11T23:18:47Z")

</div>

> [@ralphwetzel](#):
>
> `msg.time = now.toLocalTimeString();`

Maybe. But Node-red doesn't like it.

 ![Screenshot from 2023-03-12 10-17-33](https://us1.discourse-cdn.com/flex026/uploads/nodered/original/3X/1/1/119e7dc509ede891412bc8bde0b1434ecc386cb2.png)

gets me

 ![Screenshot from 2023-03-12 10-17-22](https://us1.discourse-cdn.com/flex026/uploads/nodered/original/3X/e/7/e7432a86a9547d898fbacfd03f0bcef28039ddbb.png)

```auto
TypeError: now.toLocalTimeString is not a function

```

---

<div class="post-metadata">

**Author:** ![jbudd](https://avatars.discourse-cdn.com/v4/letter/j/5f8ce5/32.png) [@jbudd](https://discourse.nodered.org/u/jbudd)\
**Post date:** [11 March 2023 23:28 UTC](https://discourse.nodered.org/t/how-to-format-time/76448/6 "2023-03-11T23:28:22Z")

</div>

I'm using this:

```auto
function addZero(i) {
    if (i < 10) { i = "0" + i }
    return i;
}
const ts = new Date()
let hhmmss = addZero(ts.getHours()) + ":" + addZero(ts.getMinutes()) + ":" + addZero(ts.getSeconds())
msg.payload = hhmmss
return msg

```

---

<div class="post-metadata">

**Author:** ![Trying\_to\_learn](https://sea2.discourse-cdn.com/flex026/user_avatar/discourse.nodered.org/trying_to_learn/32/28400_2.png) [@Trying\_to\_learn](https://discourse.nodered.org/u/Trying_to_learn)\
**Post date:** [11 March 2023 23:31 UTC](https://discourse.nodered.org/t/how-to-format-time/76448/7 "2023-03-11T23:31:14Z")

</div>

Changed `msg.payload` to `msg.time` but all works.

These tricks with _functions_ are still above my head.  
(But I am a short person)

---

<div class="post-metadata">

**Author:** ![Steve-Mcl](https://sea2.discourse-cdn.com/flex026/user_avatar/discourse.nodered.org/steve-mcl/32/4826_2.png) [@Steve-Mcl](https://discourse.nodered.org/u/Steve-Mcl)\
**Post date:** [11 March 2023 23:40 UTC](https://discourse.nodered.org/t/how-to-format-time/76448/8 "2023-03-11T23:40:16Z")

</div>

```auto
const now = new Date()
msg.time = now.toLocaleTimeString()
return msg

```

> **[Date.prototype.toLocaleTimeString() - JavaScript | MDN](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/toLocaleTimeString)**
>
> The toLocaleTimeString() method returns a string with a language-sensitive representation of the time portion of the date. In implementations with Intl.DateTimeFormat API support, this method simply calls Intl.DateTimeFormat.

---

<div class="post-metadata">

**Author:** ![Trying\_to\_learn](https://sea2.discourse-cdn.com/flex026/user_avatar/discourse.nodered.org/trying_to_learn/32/28400_2.png) [@Trying\_to\_learn](https://discourse.nodered.org/u/Trying_to_learn)\
**Post date:** [11 March 2023 23:47 UTC](https://discourse.nodered.org/t/how-to-format-time/76448/9 "2023-03-11T23:47:03Z")

</div>

Ok, in the `error` I posted above I left in the `msg.time = now` line.

But I had that middle line in there - didn't I?

It threw an error which I didn't / don't understand.

---

<div class="post-metadata">

**Author:** ![Steve-Mcl](https://sea2.discourse-cdn.com/flex026/user_avatar/discourse.nodered.org/steve-mcl/32/4826_2.png) [@Steve-Mcl](https://discourse.nodered.org/u/Steve-Mcl)\
**Post date:** [11 March 2023 23:50 UTC](https://discourse.nodered.org/t/how-to-format-time/76448/10 "2023-03-11T23:50:54Z")

</div>

Your error was 2 fold.

1. You did not specify `new` so `now` was not a proper `Date` object. So you could not call `toLocaleTimeString` on the uninstantiated object `now`
2. You also had an unnecessary line `msg.time = now`

---

<div class="post-metadata">

**Author:** ![Trying\_to\_learn](https://sea2.discourse-cdn.com/flex026/user_avatar/discourse.nodered.org/trying_to_learn/32/28400_2.png) [@Trying\_to\_learn](https://discourse.nodered.org/u/Trying_to_learn)\
**Post date:** [11 March 2023 23:57 UTC](https://discourse.nodered.org/t/how-to-format-time/76448/11 "2023-03-11T23:57:35Z")

</div>

Alas I've deleted the original code.

Looking at what I see in the screen shot - function node:

```auto
let now = Date();

msg.time = now.tolocalTimeString();

msg.time = now;
return msg;

```

Sorry, but where is `new` in this?

> You did not specify new so.....

I am fretting just now as I have seen ANOTHER problem with some code I posted in an effort to help some one.

It will work, but there is a problem.  
(Argh)

This ^&_^&_ OCD really REALLY sucks.

I am now trying to get the problem I see fixed.  
All this was a simple thing to make it a BASIC time printout showing time stamps.  
Not really crucial to things. Just to make it nicer to read.

---

<div class="post-metadata">

**Author:** ![Buckskin](https://avatars.discourse-cdn.com/v4/letter/b/b9e5f3/32.png) [@Buckskin](https://discourse.nodered.org/u/Buckskin)\
**Post date:** [12 March 2023 00:39 UTC](https://discourse.nodered.org/t/how-to-format-time/76448/12 "2023-03-12T00:39:28Z")

</div>

The difference

```auto
let now = new Date()

```

When called as a constructor, returns a new `Date` object

```auto
let now = Date()

```

```auto
When called as a function, returns a string representation of the current date and time. All arguments are ignored. The result is the same as executing new Date().toString()

```

Hope you get your problem fixed

---

<div class="post-metadata">

**Author:** ![Trying\_to\_learn](https://sea2.discourse-cdn.com/flex026/user_avatar/discourse.nodered.org/trying_to_learn/32/28400_2.png) [@Trying\_to\_learn](https://discourse.nodered.org/u/Trying_to_learn)\
**Post date:** [12 March 2023 01:25 UTC](https://discourse.nodered.org/t/how-to-format-time/76448/13 "2023-03-12T01:25:05Z")

</div>

# STUPID ME!

I read that `new` (somehow) as part of the `Date()` command.

THANKS!

---

<div class="post-metadata">

**Author:** ![Colin](https://sea2.discourse-cdn.com/flex026/user_avatar/discourse.nodered.org/colin/32/17040_2.png) [@Colin](https://discourse.nodered.org/u/Colin)\
**Post date:** [12 March 2023 08:11 UTC](https://discourse.nodered.org/t/how-to-format-time/76448/14 "2023-03-12T08:11:59Z")

</div>

Also you had local instead of locale.

---

<div class="post-metadata">

**Author:** ![Trying\_to\_learn](https://sea2.discourse-cdn.com/flex026/user_avatar/discourse.nodered.org/trying_to_learn/32/28400_2.png) [@Trying\_to\_learn](https://discourse.nodered.org/u/Trying_to_learn)\
**Post date:** [12 March 2023 20:18 UTC](https://discourse.nodered.org/t/how-to-format-time/76448/15 "2023-03-12T20:18:50Z")

</div>

There is also the _conflict_ of vocabulary and _auto correction_ with computer terms.  
local and locale.

---

<div class="post-metadata">

**Author:** ![Colin](https://sea2.discourse-cdn.com/flex026/user_avatar/discourse.nodered.org/colin/32/17040_2.png) [@Colin](https://discourse.nodered.org/u/Colin)\
**Post date:** [12 March 2023 22:13 UTC](https://discourse.nodered.org/t/how-to-format-time/76448/16 "2023-03-12T22:13:00Z")

</div>

local and locale are perfectly good English words, meaning different things. Local is an adjective, locale is a noun.

---

<div class="post-metadata">

**Author:** ![Trying\_to\_learn](https://sea2.discourse-cdn.com/flex026/user_avatar/discourse.nodered.org/trying_to_learn/32/28400_2.png) [@Trying\_to\_learn](https://discourse.nodered.org/u/Trying_to_learn)\
**Post date:** [12 March 2023 22:17 UTC](https://discourse.nodered.org/t/how-to-format-time/76448/17 "2023-03-12T22:17:34Z")

</div>

Yes.

But my _spell corrector_ is pathetic.  
It puts the wrong words in sometimes so really I should disable it.  
(If only I could - it is very bad muscle memory on how to spell things)

So that bites me a lot when trying to write code.

---

<div class="post-metadata">

**Author:** ![system](https://us1.discourse-cdn.com/flex026/uploads/nodered/original/1X/d073cd938eafa2e558d7c2cd59003b3ef4963033.png) [@system](https://discourse.nodered.org/u/system)\
**Post date:** [26 March 2023 22:18 UTC](https://discourse.nodered.org/t/how-to-format-time/76448/18 "2023-03-26T22:18:00Z")

</div>

This topic was automatically closed 14 days after the last reply. New replies are no longer allowed.
