Javascript 为什么日期不调整到UTC设置的时间?
打印时钟的时间时,类似的代码会根据选定的时区工作和调整,但这不适用于打印日期。知道为什么吗 它只显示UTC默认时间Javascript 为什么日期不调整到UTC设置的时间?,javascript,date,time,utc,Javascript,Date,Time,Utc,打印时钟的时间时,类似的代码会根据选定的时区工作和调整,但这不适用于打印日期。知道为什么吗 它只显示UTC默认时间 <script> function cetDT(){ var now = new Date(); var today = new Date(now.getUTCFullYear(), now.getUTCMonth(), now.getUTCDate(), now.getUTCHours(), now.getUTCMinutes(), now.getUTCS
<script>
function cetDT(){
var now = new Date();
var today = new Date(now.getUTCFullYear(), now.getUTCMonth(), now.getUTCDate(), now.getUTCHours(), now.getUTCMinutes(), now.getUTCSeconds());
var day = today.getDate();
var month = today.getMonth();
var year = today.getFullYear();
var anHour = 1000 * 60 * 60;
today = new Date(today.getTime() - anHour * -2);
var hours = today.getHours();
var minutes = today.getMinutes();
var seconds = today.getSeconds();
if (hours >= 12){
meridiem = "";
}
else {
meridiem = "";
}
if (minutes<10){
minutes = "0" + minutes;
}
else {
minutes = minutes;
}
if (seconds<10){
seconds = "0" + seconds;
}
else {
seconds = seconds;
}
document.getElementById("cetDT").innerHTML = (day + '/' + (parseFloat (month) + 1) + '/' + year);
}
cetDT();
</script>
函数cetDT(){
var now=新日期();
var today=新日期(now.getUTCFullYear()、now.getUTCMonth()、now.getUTCDate()、now.getUTCHours()、now.getUTCMinutes()、now.getUTCSeconds());
var day=today.getDate();
var month=today.getMonth();
var year=today.getFullYear();
var anHour=1000*60*60;
今天=新日期(today.getTime()-anHour*-2);
var hours=today.getHours();
var minutes=today.getMinutes();
var seconds=today.getSeconds();
如果(小时数>=12){
梅里迪姆=”;
}
否则{
梅里迪姆=”;
}
如果(分钟您正在使用now.getUTCDate()
,now.getUTCHours()
和类似的,它将获取UTC中的当前日期和时间
要获得本地等效项,您需要查找now.getDate()
、now.getHours()
等。请注意名称中缺少“UTC”
请注意,即使您使用today=new Date(today.getTime()-anHour*-2)
更新today
变量,但today
的首字母是UTC时间。因此,getTime()
将与UTC相关
要解决此问题,您只需调出UTC时间:
function cetDT() {
var now = new Date();
var today = new Date(now.getFullYear(), now.getMonth(), now.getDate(), now.getHours(), now.getMinutes(), now.getSeconds());
var day = today.getDate();
var month = today.getMonth();
var year = today.getFullYear();
var anHour = 1000 * 60 * 60;
today = new Date(today.getTime() - anHour * -2);
var hours = today.getHours();
var minutes = today.getMinutes();
var seconds = today.getSeconds();
if (hours >= 12) {
meridiem = "";
} else {
meridiem = "";
}
if (minutes < 10) {
minutes = "0" + minutes;
} else {
minutes = minutes;
}
if (seconds < 10) {
seconds = "0" + seconds;
} else {
seconds = seconds;
}
document.getElementById("cetDT").innerHTML = (day + '/' + (parseFloat(month) + 1) + '/' + year);
}
cetDT();
函数cetDT(){
var now=新日期();
var today=新日期(now.getFullYear()、now.getMonth()、now.getDate()、now.getHours()、now.getMinutes()、now.getSeconds());
var day=today.getDate();
var month=today.getMonth();
var year=today.getFullYear();
var anHour=1000*60*60;
今天=新日期(today.getTime()-anHour*-2);
var hours=today.getHours();
var minutes=today.getMinutes();
var seconds=today.getSeconds();
如果(小时数>=12){
梅里迪姆=”;
}否则{
梅里迪姆=”;
}
如果(分钟<10){
分钟=“0”+分钟;
}否则{
分钟=分钟;
}
如果(秒<10){
秒=“0”+秒;
}否则{
秒=秒;
}
document.getElementById(“cetDT”).innerHTML=(天+'/'+(月)+1)+'/'+年);
}
cetDT();
请注意,还有一些代码是完全冗余的,例如else{seconds=seconds;}
。您可能希望研究重构此代码;)
希望这有帮助!:)您现在使用的是now.getUTCDate()
和now.getUTCHours()
,它将获取UTC中的当前日期和时间。getDate
,getHours
等将获取时区相关时间。但我稍后也会用“今天=新日期(今天.getTime()-anHour*-2)”来修改它.或者至少我在尝试…有什么建议吗?这段代码有很多地方不对劲。你到底想做什么?是的,这很混乱,但稍后会被澄清。这是为了我自己的一个项目:)请理解StackOverflow的任务是为广大受众提供有用的问答对。这不是dumpin上面的代码甚至没有输出所询问的变量。你也没有显示任何研究成果。在它当前的形式下,它很可能是(也应该是)否决。请阅读帮助中心文档中的和。因此,如果我正确的话,在交换UTC时间时,我必须指定一个时区。我很抱歉听起来像一个初学者,但我一直在研究这段代码,我不知道替换什么来更改时区。尽管问题很糟糕,但请注意它会最好始终使用基于UTC的函数,而不是基于本地时间的函数。您是对的,它们需要一致地使用,但本地时间函数将始终采用本地时区的行为,包括任何有效的夏令时规则。因为OP似乎希望按从UTC到UTC的固定小时数,应该使用UTC作为基准。@ebkod-您甚至不显示时区。您显示的是一个固定偏移量-2
。这与时区非常不同。请阅读。另请阅读:。关于UTC偏移量,我认为OP试图在自己的时区中计算时间差。是的,天节省开支之类的事情可能会引起一些问题,对于一个拥有多个国家/地区用户的网站来说,最好始终使用UTC时间。我完全同意Matt的观点---2
是对新日期()的任意偏移量。
。只需对其进行一些研究,您就会很快将其记录下来:)