我注意到JavaScript的new Date()功能在接受多种格式的日期时非常聪明.
Xmas95 = new Date("25 Dec, 1995 23:15:00")
Xmas95 = new Date("2009 06 12,12:52:39")
Xmas95 = new Date("20 09 2006,12:52:39")
Run Code Online (Sandbox Code Playgroud)
在调用new Date()函数时,我无法在任何地方找到显示所有有效字符串格式的文档.
这用于将字符串转换为日期.如果我们看一下相反的方面,即将日期对象转换为字符串,直到现在我的印象是JavaScript没有内置的API来将日期对象格式化为字符串.
编者注:以下方法是提问者的企图,关于特定浏览器的工作,但也不会在一般的工作; 请参阅此页面上的答案以查看一些实际解决方案.
今天,我在toString()日期对象上使用了该方法,并且令人惊讶的是它用于将日期格式化为字符串.
var d1 = new Date();
d1.toString('yyyy-MM-dd'); //Returns "2009-06-29" in Internet Explorer, but not Firefox or Chrome
d1.toString('dddd, MMMM ,yyyy') //Returns "Monday, June 29,2009" in Internet Explorer, but not Firefox or Chrome
Run Code Online (Sandbox Code Playgroud)
在这里,我找不到任何关于我们可以将日期对象格式化为字符串的方法的文档.
列出Date()对象支持的格式说明符的文档在哪里?
在JavaScript中,可以声明多个这样的变量:
var variable1 = "Hello World!";
var variable2 = "Testing...";
var variable3 = 42;
Run Code Online (Sandbox Code Playgroud)
......或者像这样:
var variable1 = "Hello World!",
variable2 = "Testing...",
variable3 = 42;
Run Code Online (Sandbox Code Playgroud)
一种方法比另一种方法更好/更快吗?
我正在寻找所有语言环境的列表以及我正在编写的PHP应用程序的短代码.平台之间的数据有很大差异吗?
另外,如果我正在开发一个国际申请,我可以只支持一个版本的英语,还是世界各地的英语存在显着差异?
我目前正在尝试显示用户的时间而不显示秒数.有没有办法可以使用Javascript的.toLocaleTimeString()来做到这一点?
做这样的事情:
var date = new Date();
var string = date.toLocaleTimeString();
Run Code Online (Sandbox Code Playgroud)
将显示每个单位的用户时间,例如,当前显示3:39:15 PM.我能够显示相同的字符串,只是没有秒吗?(例如下午3:39)
目标:找到local time并UTC time offset以下列格式构建URL.
示例URL:/ Actions/Sleep?duration = 2002-10-10T12:00:00-05:00
格式基于W3C建议:http: //www.w3.org/TR/xmlschema11-2/#dateTime
文件说:
例如,2002-10-10T12:00:00-05:00(2002年10月10日中午,中央夏令时以及美国东部标准时间)等于2002-10-10T17:00:00Z,比2002-10-10T12:00:00Z晚5个小时.
所以基于我的理解,我需要通过新的Date()找到我的本地时间,然后使用getTimezoneOffset()函数来计算差异,然后将它附加到字符串的末尾.
1.以格式获取当地时间
var local = new Date().format("yyyy-MM-ddThh:mm:ss"); //today (local time)
Run Code Online (Sandbox Code Playgroud)
产量
2013-07-02T09:00:00
Run Code Online (Sandbox Code Playgroud)
2.以小时为单位获取UTC时间偏移量
var offset = local.getTimezoneOffset() / 60;
Run Code Online (Sandbox Code Playgroud)
产量
7
Run Code Online (Sandbox Code Playgroud)
3.Construct URL(仅限时间部分)
var duration = local + "-" + offset + ":00";
Run Code Online (Sandbox Code Playgroud)
输出:
2013-07-02T09:00:00-7:00
Run Code Online (Sandbox Code Playgroud)
以上输出结果表示我的当地时间是2013/07/02 9am,与UTC的差异是7小时(UTC是比当地时间早7小时)
到目前为止它似乎工作,但如果getTimezoneOffset()返回负值如-120怎么办?
我想知道在这种情况下格式应该是什么样的,因为我无法从W3C文档中找到答案.提前致谢.
我一直在尝试使用DateTypeScript中的对象来格式化我想要的方式.
我有一个类Module定义为:
export class Module {
constructor(public id: number, public name: string, public description: string,
public lastUpdated: Date, public owner: string) { }
getNiceLastUpdatedTime(): String {
let options: Intl.DateTimeFormatOptions = {
day: "numeric", month: "numeric", year: "numeric",
hour: "2-digit", minute: "2-digit"
};
return this.lastUpdated.toLocaleDateString("en-GB", options) + " " + this.lastUpdated.toLocaleTimeString("en-GB", options);
}
}
Run Code Online (Sandbox Code Playgroud)
当我使用以下代码调用该方法时:
let date = new Date(1478708162000); // 09/11/2016 16:16pm (GMT)
let module = new Module(1, "Test", "description", date, "test owner");
console.log(module.getNiceLastUpdatedTime());
Run Code Online (Sandbox Code Playgroud)
我最终在控制台中打印了以下内容:
'9 …Run Code Online (Sandbox Code Playgroud) 使用new Date或Date.parse在JavaScript中,我不能只传递任意日期格式.根据格式,我得到的日期与我想要的不同,甚至Invalid Date不是日期对象.某些日期格式在一个浏览器中工作,但在其他浏 那么我应该使用哪种日期时间格式?
其他问题:
所有浏览器都支持相同的格式吗?Mozilla Firefox,Google Chrome,Microsoft Internet Explorer,Microsoft Edge和Apple Safari如何处理日期时间字符串?那么Node.js呢?
是否需要考虑本地日期格式?例如,如果我住在瑞士并且日期格式是30.07.2018,我可以使用new Date('30.07.2018')吗?
是否需要考虑当地时区?
如何从日期对象中获取日期时间字符串?
如何检测无效的日期时间字符串?
Moment.js等日期库如何处理日期字符串?
如果您没有注意到,我回答了我自己的问题(为什么?).
我有一个 mat-table 显示日期、时间段之前和时间段之后的列。HTML代码:-
<ng-container
matColumnDef="{{ column }}"
*ngFor="let column of columnsToDisplay"
>
<th mat-header-cell *matHeaderCellDef>{{ column }}</th>
<td mat-cell *matCellDef="let element">
{{ element[column] }}
</td>
</ng-container>
Run Code Online (Sandbox Code Playgroud)
打字稿代码:
columnsToDisplay = [
'executionDate',
'previousTimePeriod',
'afterTimePeriod'
];
executionDate: string = new Date().toISOString().slice(0, 10);
Run Code Online (Sandbox Code Playgroud)
如果我使用管道{{ element[column] | date: 'yyyy-MM-dd'}}将字符串类型的日期显示为日期类型,那么我将无法看到时间段之前和之后。如何仅将日期查看为“yyyy-MM-dd”
我有一个格式为“05-01-2016”的字符串,当我在 Chrome 中运行以下代码时,我得到了正确的输出
var fromDate = new Date(searchOpts.RunDateFrom);
fromDate.format("yyyy-MM-dd");
Run Code Online (Sandbox Code Playgroud)
输出=“2016/05/01”
但是,当在我的 js 文件中执行此代码时,我得到此输出
2016 年 5 月 1 日星期日 00:00:00 GMT+0530(印度标准时间)
我该如何防止这种情况?我需要将这种格式的日期“2016-05-01”传递给solr
我需要将这样的日期,03/07/2016转换为日期格式,如2016-03-07.
我怎么能用javascript或jquery做到这一点?
javascript ×9
date ×4
datetime ×3
time ×2
typescript ×2
angular ×1
coding-style ×1
date-format ×1
declaration ×1
html ×1
jquery ×1
locale ×1
performance ×1
php ×1
solr ×1
string ×1
time-format ×1
timezone ×1
variables ×1