是否有可能使用纯Javascript确定 FORMAT 在其操作系统(Windows,Linux,MAC OS等)上配置用户的日期时间?
提前致谢。
编辑:我知道方法toLocaleString(),但这不能帮助我获得客户端在本地计算机上配置的格式。
答案 0 :(得分:3)
我在纯IE中写了一些可以在IE / Firefox / Chrome中运行的东西。它将输出MM / DD / YYYY或DD / MM / YYYY,...取决于toLocalDateString()。
在Safari上没有用,但新的Date()。toLocalDateString()也没有。
这是jsFiddle
//Create a known date string
var y = new Date(2013, 9, 25);
var lds = y.toLocaleDateString();
//search for the position of the year, day, and month
var yPosi = lds.search("2013");
var dPosi = lds.search("25");
var mPosi = lds.search("10");
//Sometimes the month is displayed by the month name so guess where it is
if(mPosi == -1)
{
mPosi = lds.search("9");
if(mPosi == -1)
{
//if the year and day are not first then maybe month is first
if(yPosi != 0 && dPosi != 0)
{
mPosi = 0;
}
//if year and day are not last then maybe month is last
else if((yPosi+4 < lds.length) && (dPosi+2 < lds.length)){
mPosi = Infinity;
}
//otherwist is in the middle
else if(yPosi < dPosi){
mPosi = ((dPosi - yPosi)/2) + yPosi;
}else if(dPosi < yPosi){
mPosi = ((yPosi - dPosi)/2) + dPosi;
}
}
}
var formatString="";
var order = [yPosi, dPosi, mPosi];
order.sort(function(a,b){return a-b});
for(i=0; i < order.length; i++)
{
if(order[i] == yPosi)
{
formatString += "YYYY/";
}else if(order[i] == dPosi){
formatString += "DD/";
}else if(order[i] == mPosi){
formatString += "MM/";
}
}
formatString = formatString.substring(0, formatString.length-1);
$('#timeformat').html(formatString+" "+lds);
答案 1 :(得分:1)
这是一个可能有效或无效的想法。
创建一个日期,其中所有元素都是不同的,如1999年2月18日13:45,使用toLocaleString()
,然后根据其不同的值识别元素。
可能有点复杂,我没有任何可能对它有帮助的代码,但它是一个被抛弃的想法,也许你可以利用它。
var d = new Date(1999,1,18,13,45,0).toLocaleString();
document.write("<p>String: "+d+"</p>");
var f = d
.replace(/1999/,"%Y")
.replace(/99/,"%y")
.replace(/F[^ ]{3,}/i,"%M")
.replace(/F[^ ]+/i,"%m")
.replace(/PM/,"%A")
.replace(/pm/,"%a")
.replace(/18[^ ]+/,"%d%S") // day number with suffix
.replace(/18/,"%d")
.replace(/13/,"%H")
.replace(/1/,"%h")
.replace(/45/,"%i")
.replace(/00/,"%s");
// optionally add something to detect the day of the week (Thursday, here)
document.write("<p>Format: "+f+"</p>");
输出:
String: 18 February 1999 13:45:00
Format: %d %M %Y %H:%i:%s
答案 2 :(得分:0)
这样的东西?
<script type="text/javascript">
var d=new Date();
document.write("Original form: ");
document.write(d + "<br />");
document.write("Formatted form: ");
document.write(d.toLocaleString());
//calculate change of the 2 dates
</script>