Some browser use the "dd/mm/yyyy" format, other "mm/dd/yyyy" and so on, either way, for you to not get invalid date you need to know which format the date class/function/method will use so you can pass the date string in that order.
Obviously the browser you tested on use "mm/dd/yyyy" and therefore your first date is invalid as there exist no a month with number "30" as in "30/09/2015".
Of course it would be clever if browser could guess and in this case it would be easy but this, "10/12/2015", it wouldn't, as both the "mm/dd/yyyy" and "dd/mm/yyyy" will have a corresponding real date, "10 of Dec" and "12 of Oct", and we can't let the browser decide which one is the one we mean, as both will pass as valid.
Check this question for a deep dive into the issue and as well a couple of ways how to solve it
- Why does Date.parse give incorrect results?