get the date - 3 months - javascript

I'm trying to get the current date - 3 months and use it in a postman Pre-request script. I'm told it uses javascript, but it doesn't seem to be working.
The error I get is:
There was an error in evaluating the Pre-request Script: TypeError:
startDate.setMonth is not a function
Here is what I have:
// setup start date
var startDate = Date();
startDate.setMonth(startDate.getMonth() - 3);

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date#Syntax
JavaScript Date objects can only be instantiated by calling JavaScript Date as a constructor: calling it as a regular function (i.e. without the new operator) will return a string rather than a Date object; unlike other JavaScript object types, JavaScript Date objects have no literal syntax.
so
Date();
needs to be
new Date();

Try change var startDate = Date(); to var startDate = new Date();

As an alternative, Postman comes with the moment module built in so you could do something like this:
var moment = require("moment")
var startTime = moment().subtract(3, 'months')
Or you could obviously use native JavaScript, worth knowing a couple of different ways though.

Related

getEventsForDay() formatting issues with datepicker return value

I'm trying to use the Calendar API to pull up some events based on datepicker output. The issue that i'm facing with my AppScript is formatting properly the value that i get from the datepicker that will serve as input for the getEventsForDay() function.
function testing(){
var z = CalendarApp.getCalendarsByName("X")[0];
var date = new Date('2016-10-12');
var dateformatted =Utilities.formatDate(date), "GMT", "yyyy-MM-dd hh:mm:ss a");
var a = z.getEventsForDay(dateformatted, {search: 'OOO'});
The output of a into this scenario is a empty object - which is expected because this formatting is not working at all. (i've read 1000 posts that this should work).
For context as well, i have one working example with today's date, which it works fine becase the input is a new Date(). Here you go:
var datetoday = new Date();
var b = z.getEventsForDay(datetoday, {search: 'OOO'});
Any ideas on what i'm missing here?
Thanks in advance.
Since new Date() returns the Date object in UTC and not the local timezone, you may be querying the wrong day and hence the empty object if the other day does not have any events.
You can covert the date to the current timezone like
date.setTime(date.getTime() + date.getTimezoneOffset()*60*1000)
This should return the date in the local timezone and you will get the events for the correct day.
Hope it helps
Made some changes and now this works on the App Script:
var t = "2016-10-01";
var q = t.replace(/-/g,"/");
var a = new Date(q);
a.setTime(a.getTime() + a.getTimezoneOffset()*60*1000)
var w = z.getEventsForDay(a, {search: 'OOO'});
Logger.log(a);
Logger.log(w);

How can I get date and time separately using jQuery?

In my table date is listed as "2015-07-31 06:02:20". How can I get date and time separately using jQuery?
I used some code but it shows some errors.
var timestamp = new Date(data.responsecusthistory.created_at);
var date = timestamp.toDateString();
Error: Invalid Date
var date = data.responsecusthistory.created_at.split(" ")[0];
var time = data.responsecusthistory.created_at.split(" ")[1];
If you want to have a time string (i.e. HH:MM:SS), try e.g. this:
var timestampTime = timestamp.toTimeString().split(' ')[0];
Anyway, there's no obvious reason why you get the "Error: Invalid Date", as long as
data.responsecusthistory.created_at
is a correct value, such as "2015-07-31 06:02:20". Please consider double-checking this variable.
Try this:
dateString= "2015-07-31 06:02:20";
temp = new Date(dateString);
dateStr= $.datepicker.formatDate('mm/dd/yy', temp );
for getting different formats check the link https://github.com/phstc/jquery-dateFormat.
Using different formats we will get different date, time etc in which ever forms we need it.

TypeError: Date is not a constructor

So, I've been making forms for my company for some time now with pretty easy Javascript that has worked for me in the past. However all of a sudden it's kicking out the error: TypeError: Date is not a constructor
The Code:
var Date = this.getField("Text1");
Date.value = util.printd("mm/dd/yyyy",new Date());
It works on all my old forms, but now it won't work on new ones... and I've tried making a new button on an old form - just copying and pasting the code, and then it'll break all the other buttons and spit out the same error.
Running: Windows 7 64-bit with Acrobat XI 11.0.10
The variable Date is hiding the global function Date and causing this error. Because of how scoping works in JS, the inner-most use of a name is the one that matters.
In this case, you declare var Date which becomes the only Date the function knows about. When you assign it a field or text (Date = this.getField...), you hide the global class.
You can rename your variable (I would suggest date, as capital names are typically reserved for types) or explicitly reference new window.Date when you go to construct a new date.
This worked for me:
var d = new window.Date();
Might be this answer will be helpful in future. I was using below code
var dateTime=new date();
But right code is
var dateTime=new Date();
You can't define a variable called "Date" because there's a built-in object in JS called that (you're using it in your code, actually). Change the name to something else.
var Date= somthing; <-- wrong declare, you should not use build -in object name
I was having this problem and I solved it! don't use "Date" as variable because this causes conflict with Global function Date();
Exemple: Wrong !
var Date = new Date();
document.getElementById('dateCopy').innerHTML = Date.getFullYear();
Right:
var DateTime = new Date();
document.getElementById('dateCopy').innerHTML = DateTime.getFullYear();
In your case:
var DateTime = this.getField("Text1");
DateTime.value = util.printd("mm/dd/yyyy",new Date());

How to display / print current date and next date using javascript

I have a form, where I need to do some validations by getting the current date and next date separately using javaScript.
I tried this code but it does not work correctly.
var currentDate = new Date();//get current date
var validdate=currentDate;
validdate.setDate(validdate.getDate()+1);
But what happens is when valid date changes to +1, then current date also changes to +1.
But I need it separately, means when I print the output: I get
currentDate = 5th May 2014;
validdate = 6th May 2014;
Then when again I print currentDate, it changes to "6th May 2014".
How to get the current date and next date without affecting each other?
instead of validdate = currentDate; try validdate = new Date();.
Your problem happens because in javascript when you pass an object to a value it is passed by reference and not by value. So when you change it you change even the original object because you don't actually have two different objects.
you are refering to same object instance for currentDate and validdate.
initialise them seperatly like below
currentDate = new Date();
validdate = new Date();
also rename your validdate to validDate for more readability.
to make a new copy of a Date object use following code
var validdate = new Date(currentDate.getTime());
now when you modify the validdate object it will not update currentDate
Try This
var currentDate = new Date();//get current date
alert(currentDate.toString());
var validdate=new Date();
validdate.setDate(currentDate.getDate()+1);
alert(validdate.toString());
alert(currentDate.toString());

Save and load date localstorage

I have to save a date to localStorage and when the page is refreshed I want to calculate how much time has passed since then.
Now, here's the problem: localStorage saves the date as a string so after it is saved in localStorage trying to calculate the difference between those two dates returns NaN.
Try this in your javascript console:
var a = new Date();
var b = new Date();
console.log(b - a); //this works
localStorage.a = a;
localStorage.b = b;
console.log(localStorage.b - localStorage.a); //this doesn't work
I also tried JSON.stringify and JSON.parse trying to keep the date object intact, but that doesn't work either.
My guess is that I have to parse the date in the localStorage. If there is not a better method, how can I do that?
Demo: http://jsfiddle.net/AuhtS/
Code:
var a = new Date();
var b = new Date();
console.log(b - a); //this works
localStorage.a = a;
localStorage.b = b;
a = Date.parse(localStorage.a); // parse to date object
b = Date.parse(localStorage.b);
console.log(b - a); // now, this will work
Reason
Everything is stored as a string in localStorage.
So when you do localStorage.b - localStorage.a, what you're attempting is trying to subtract one string from another. Which is why it doesn't work.
To store a date in localStorage, simply do
localStorage['key'] = ''+myDate.getTime();
And to restore it :
var myDate = new Date(parseInt(localStorage['key'], 10));
(you might also want to test it's defined before)
It also works with duration (a date minus another one) : Simply use the value as long (millisecondes) and convert to and from a string.
Note that JSON doesn't include a standardized date format. Don't use JSON for dates.
I'd use this:
var d1 = new Date();
localStorage.setItem("key", d1.getTime());
var d2 = new Date(parseInt(localStorage.getItem[key]));
all that is missing is proper null validation.
You can simply go for:
var date1 = <date1>
var date2 = <date2>
localStorage.setItem('date1', date1.toString())
localStorage.setItem('date2', date2.toString())
var date1 = new Date(localStorage.getItem('date1'))
var date2 = new Date(localStorage.getItem('date2'))
var diff = date1 - date2
In my case, I need it in Date type. Therefore, here it is:
var a = new Date();
localStorage.a = a;
var c = new Date(localStorage.a);
localStorage.setItem("date", new Date().toString());
you can directly add like this
I believe that localStorage only takes timestamps. Correct me if I am wrong. I suggest you use the moment library instead of the JS built in Date library.
moment is way easier to use and has some handy builtin functions.
One is toString() which allows you to parse the data as a string.
an example is:
// create a moment (the current time)
const now = moment()
// convert it to a timestamp to store it in localStorage
now.valueOf()
// get the data back in string format
now.toString()
Moment also has the useful .fromNow() method, which allow you to get the time difference from the date was created to the moment it was edited.
I hope this help. read the docs for moment for more info here: https://momentjs.com/docs/

Categories

Resources