Yisroel M. Olewski
Yisroel M. Olewski

Reputation: 1626

How to get raw date string from date picker?

I'm struggling for hours with this seemingly trivial issue.

I have a antd datepicker on my page.

Whenever I choose a date, instead of giving me the date I chose, it gives me a messy moment object, which I can't figure out how to read.

All I want is that when I choose "2020-01-18", it should give me precisely this string that the user chose, regardless of timezone, preferably in ISO format.

This is not a multi-national website. I just need a plain vanilla date so I can send it to the server, store in db, whatever.

Here are some of my trials, so far no luck:

var fltval = e;
if (isMoment(fltval)) {
  var dat = fltval.toDate();
  //dat.setUTCHours(0)
  fltval = dat.toISOString(); // fltval.toISOString(false)

  var a = dat.toUTCString();
  //var b = dat.toLocaleString()
}

It keeps on moving with a few hours, probably to compensate for some timezone bias

UPDATE 1:

the datestring is data-wise correct. But its not ISO, so I cant use it correctly. I might try to parse this, but I cannot find a way to parse a string to date with a specific format.

UPDATE 2:

I also tried adding the bias manually, but for some reason the bias is 0

var dat = pickerval.toDate()
var bias = Date.prototype.getTimezoneOffset()// this is 0...
var bias2 = dat.getTimezoneOffset()// and this too is 0
var d2 = new Date(dat.getTime()+bias)
var mystring= dat.toISOString() //still wrong

Thanks!

Upvotes: 2

Views: 2390

Answers (3)

Karthikeyan
Karthikeyan

Reputation: 321

Javascript date functions can be used,

I assume you are getting in 2022-01-03T11:19:07.946Z format then

date.toISOString().slice(0, 10)

to 2022-01-03

Upvotes: 1

krasi
krasi

Reputation: 38

I am assuming your code snippet is inside the onChange method. This gives you a moment and a date string to work with (the first and second parameters of the function respectively).

You have a few options. You could set the format prop on the DatePicker to match the format of the string you want. Then just use the date string. Or you can use the moment object as Domino987 described.

Upvotes: 0

Domino987
Domino987

Reputation: 8774

There are 2 ways to get the date string:

  1. Use the moment.format api: date.format("yyyy-MM-DD")
  2. Use the date string that is passed to the onChange as second parameter

Here is a Link.

Upvotes: 1

Related Questions