Javascript 如何获得一周中的哪一天和一年中的哪一个月?

Javascript 如何获得一周中的哪一天和一年中的哪一个月?,javascript,datetime,dayofweek,Javascript,Datetime,Dayofweek,我对Javascript了解不多,我发现的其他问题与日期操作有关,而不仅仅是获取我需要的信息 客观的 我希望获得如下格式的日期: 2011年1月27日星期四17:42:21打印 到目前为止,我得到了以下信息: var now = new Date(); var h = now.getHours(); var m = now.getMinutes(); var s = now.getSeconds(); h = checkTime(h); m = checkTime(m); s = checkT

我对Javascript了解不多,我发现的其他问题与日期操作有关,而不仅仅是获取我需要的信息

客观的 我希望获得如下格式的日期:

2011年1月27日星期四17:42:21打印

到目前为止,我得到了以下信息:

var now = new Date();
var h = now.getHours();
var m = now.getMinutes();
var s = now.getSeconds();

h = checkTime(h);
m = checkTime(m);
s = checkTime(s);

var prnDt = "Printed on Thursday, " + now.getDate() + " January " + now.getFullYear() + " at " + h + ":" + m + ":" s;
我现在需要知道如何获取星期几和月份(它们的名称)


是否有一个简单的方法来实现它,或者我考虑使用数组,在这里我只使用<代码> > GETMUNTH()/<代码>和<代码>现在。GETWAL()/<代码>?/P> < P>是的,您需要数组。< /P>

var days = ['Sunday','Monday','Tuesday','Wednesday','Thursday','Friday','Saturday'];
var months = ['January','February','March','April','May','June','July','August','September','October','November','December'];

var day = days[ now.getDay() ];
var month = months[ now.getMonth() ];
或者你可以使用图书馆


编辑:

如果要经常使用这些工具,可能需要扩展
Date.prototype
,以便于访问

(function() {
    var days = ['Sunday','Monday','Tuesday','Wednesday','Thursday','Friday','Saturday'];

    var months = ['January','February','March','April','May','June','July','August','September','October','November','December'];

    Date.prototype.getMonthName = function() {
        return months[ this.getMonth() ];
    };
    Date.prototype.getDayName = function() {
        return days[ this.getDay() ];
    };
})();

var now = new Date();

var day = now.getDayName();
var month = now.getMonthName();
使用该工具,您可以:

var now = new Date;
var prnDt = now.customFormat( "Printed on #DDDD#, #D# #MMMM# #YYYY# at #hhh#:#mm#:#ss#" );

不幸的是,javascript中的
Date
对象仅以数字格式返回有关月份的信息。您可以做的更快的事情是创建一个月数组(它们不应该经常更改!),并创建一个基于数字返回名称的函数

大概是这样的:

function getMonthNameByMonthNumber(mm) { 
   var months = new Array("January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"); 

   return months[mm]; 
}
因此,您的代码变为:

var prnDt = "Printed on Thursday, " + now.getDate() + " " + getMonthNameByMonthNumber(now.getMonth) + " "+  now.getFullYear() + " at " + h + ":" + m + ":" s;
例如,您可以查看哪个解析本地化的日期输出

在您的示例中,格式可能如下所示:

new Date().toString('dddd, d MMMM yyyy at HH:mm:ss') 

您还可以通过以下方式扩展date对象以返回工作日:

Date.prototype.getWeekDay = function() {
    var weekday = ["Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"];
    return weekday[this.getDay()];
}
因此,只能调用date.getWeekDay()

var GetWeekDays=函数(格式){
var weekDays={};
var curDate=新日期();
对于(变量i=0;i<7;++i){
工作日[curDate.getDay()]=curDate.toLocaleDateString('ru-ru'{
工作日:格式?格式:“短”
});
curDate.setDate(curDate.getDate()+1);
}
返回工作日;
};
me.GetMonthNames=函数(格式){
var monthNames={};
var curDate=新日期();
对于(变量i=0;i<12;++i){
monthNames[curDate.getMonth()]=curDate.toLocaleDateString('ru-ru'{
月份:格式?格式:“长”
});
curDate.setMonth(curDate.getMonth()+1);
}
返回月份;
};
正如@所建议的,您也可以查看

样品
var today=moment();
var结果={
日期:今天。格式(“dddd”),
月份:今天。格式(“MMM”)
}
document.write(“+JSON.stringify(result,0,4)+”)
const options = { weekday: 'long' };
const date = new Date();
console.log(date.toLocaleDateString('en-US', options));

使用标准的javascript日期类不需要阵列。不需要额外的库。

var options={weekday:'long',year:'numeric',month:'long',day:'numeric',hour:'2位',minute:'2位',second:'2位',hour12:false};
变量prnDt='打印日期'+新日期()。toLocaleTimeString('en-us',选项);

控制台日志(prnDt)这很简单。您可以将选项设置为仅在toLocaleDateString()中显示周天数,以获取名称。例如:

new Date().toString('dddd, d MMMM yyyy at HH:mm:ss') 
(new Date()).toLocaleDateString('en-US',{weekday:'long'})将仅返回一周中的某一天。和(new Date())。toLocaleDateString('en-US',{month:'long'})将只返回一年中的月份。

From

toLocaleDateString()方法返回一个字符串,该字符串包含此日期的日期部分的语言敏感表示形式。新的locales和options参数允许应用程序指定应使用其格式约定的语言,并允许自定义函数的行为。在忽略区域设置和选项参数的旧实现中,使用的区域设置和返回的字符串的形式完全依赖于实现

长格式:

console.log(new Date().toLocaleDateString('en-US', { weekday: 'long' }));
一艘班轮:

  function currentDate() {
      var monthNames = [ "JANUARY", "FEBRUARY", "MARCH", "APRIL", "MAY", "JUNE",
                     "JULY", "AUGUST", "SEPTEMBER", "OCTOBER", "NOVEMBER", "DECEMBER" ];
      var days = ['SUNDAY','MONDAY','TUESDAY','WEDNESDAY','THURSDAY','FRIDAY','SATURDAY'];                       
      var today = new Date();
      var dd   = today.getDate();
      var mm   = monthNames[today.getMonth()]; 
      var yyyy = today.getFullYear();
      var day  = days[today.getDay()];
      today = 'Date is :' + dd + '-' + mm + '-' + yyyy;
      document.write(today +"<br>");
      document.write('Day is : ' + day );
  }
  currentDate();
注意:locale还有其他语言选项,但此处提供的语言选项适用于美国英语

函数currentDate(){
var monthNames=[“一月”、“二月”、“三月”、“四月”、“五月”、“六月”,
“七月”、“八月”、“九月”、“十月”、“十一月”、“十二月”];
var days=[‘星期日’、‘星期一’、‘星期二’、‘星期三’、‘星期四’、‘星期五’、‘星期六’];
var today=新日期();
var dd=today.getDate();
var mm=monthNames[today.getMonth()];
var yyyy=today.getFullYear();
var day=days[today.getDay()];
今天='日期为:'+dd+'-'+mm+'-'+yyyy;
写(今天+“
”);
const options = { weekday: 'long' };
const date = new Date();
console.log(date.toLocaleDateString('en-US', options));
文件。书写('天为:'+天);
const options = { weekday: 'long' };
const date = new Date();
console.log(date.toLocaleDateString('en-US', options));
} currentDate();
写日期=
文档。写(Date())

我认为这是我找到的最好的解决方案

const options = { weekday: 'long' };
const date = new Date();
console.log(date.toLocaleDateString('en-US', options));

如果一周从1:‘星期一’、2:‘星期二’、3:‘星期三’、4:‘星期四’、5:‘星期五’、6:‘星期六’、7:‘星期日’开始,我们可以使用下面的片段

让工作日={
1:"星期一",,
二:"星期二",,
3:"星期三",,
四:"星期四",,
五:"星期五",,
6:‘星期六’,
7:“星期日”};
返回工作日[dt];

威尔:不客气。仅供参考,如果您要经常这样做,您可以很容易地将功能原型化到
Date
对象中。我将在一分钟内更新。本地化您的数据,并且不需要只使用一种语言的数组!selectedLocale='en us';selectedDate.toLocaleString(selectedLocale,{month:“long”});我刚才这样做了,但是必须使用星期一作为数组中的第一个元素,而不是星期天。尽管如此,它仍然非常有效。不,不,不,不。只需使用标准的javascript日期类。不需要阵列或额外的库。请看我的回答:@RWC这很好,但是我如何只获得工作日而不获得剩余的日期部分?也就是说,我想要
周六
而不是
2019年2月9日,周六
@Valdimir Nul:var prnDt='打印日期'+新日期().toLocaleDateString('en-us',{工作日:'long');控制台日志(prnDt);绝对是最好的方法。@Vladimir Firefox有个问题,总是显示时间,然后:
new Date().toLocaleTimeString(语言,{weekday:'long')).split(“”)[0]
这只是为我显示时间