问题描述
function formatedDate (localid,inputdate) {
var locale = 'es_MX';
console.log(locale,inputdate)
// Set locale to moment
moment.locale(locale);
// Get locale data
const localeData = moment.localeData(locale);
const format = localeData.longDateFormat('L');
const m2 = moment(new Date(inputdate),format);
console.log(m2.format());
console.log(m2.format(format) + ' using format: ' + format);
return m2.format(format)
};
console.log(formatedDate('ex-MX','2020-10-07T06:02:55Z'));
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.18.1/moment-with-locales.min.js"></script>
我需要根据国家/地区转换日期,这完全取决于位置。
所以我正在尝试通过使用js瞬间实现
这里的日期以UST格式存储在数据库中
示例:如果输入“ 2020-10-07T09:30:00”
2020年6月10日的预期产量
这里的日期是根据语言环境设置的格式,但未考虑时间,它的所有区域都根据时间和语言环境以不同的格式显示同一日期。
注意:我只需要显示日期(但应考虑格式化时间)
在我的有角度的应用程序中,它没有按预期方式工作,我做错了什么,有人可以帮助我吗。
预先感谢
解决方法
function formatedDate (localid,inputdate) {
const local = moment(inputdate).locale(localid)
return local.format('L')
};
console.log(formatedDate('ex-MX','2020-10-07T06:02:55Z'));
如果您希望基于时区的本地时间,请使用moment-timezone
function formatedDate(date,timezone){
return moment.tz(date,timezone).format('LLLL');
}
,
语言环境与时区无关,因为一个语言环境可能属于多个时区。例如,en-US
有6个时区。因此,我认为传递语言环境不会将您的日期转换为预期的时区。
您可以使用angular提供的DatePipe进行格式设置和时区转换。
如果您的日期在UST
中,则可以通过增加4个小时将其转换为UTC
。然后将其转换为所需的时区-
@Component({
selector: 'my-app',templateUrl: './app.component.html',styleUrls: [ './app.component.css' ]
})
export class AppComponent implements OnInit {
zone = 'IST';
locale = 'en-US';
currentDate = '';
constructor(private date: DatePipe) {
}
getTime() {
// Date is in UTC (suffix z)
const d = this.date.transform('2020-10-07T09:30:00Z','short',this.zone,this.locale);
console.log(d);
this.currentDate = d;
}
请参阅this example。
注意:
我不确定您是否有可用的时区,但是只要知道位置,就可以随时获取(请参见this答案)。